J'apprends ruby et je voulais tester comment créer le fichier de pierres précieuses. J'ai suivi suivants dans ma machine. 1.9.3p362 rubis (25/12/2012 révision 38607) [x86_64 Linux] Version 1.2.3 Bundler râteau version 10.0.3Ruby Gem
I créé un bijou en utilisant bundle gem hello_gem
. J'ai ajouté exemple de code à hello_gem.rb
module HelloGem
class Base
def self.hello
puts "Hello Ruby Gem #{HelloGem::VERSION}"
end
end
end
Ma structure de dossier est comme suit.
├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│ ├── hello_gem
│ │ └── version.rb
│ └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
J'ai ensuite créé la gemme en utilisant rake install
. Puis j'ai commencé irb
et je peux exécuter après.
1.9.3-p362 :001 > require 'hello_gem'
=> true
1.9.3-p362 :002 > HelloGem::Base.hello
Hello Ruby Gem 0.0.1
=> nil
1.9.3-p362 :003 >
Le problème vient lorsque je voulais déplacer le code vers le dossier lib. J'ai créé lib/hello_gem/base.rb
et ajouté le code ci-dessus. Et dans le hello_gem.rb
je viens d'utiliser require "hello_gem/base"
. Maintenant, mon projet ressemble à ceci.
├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│ ├── hello_gem
│ │ ├── base.rb
│ │ └── version.rb
│ └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
Lorsque je construis la pierre précieuse en utilisant rake install
et utiliser irb
pour tester l'erreur suivante est arrivé.
1.9.3-p362 :001 > require 'hello_gem'
LoadError: cannot load such file -- hello_gem/base
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/sandarenu/.rvm/gems/ruby-1.9.3-p362/gems/hello_gem-0.0.1/lib/hello_gem.rb:2:in `<top (required)>'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from (irb):1
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
1.9.3-p362 :002 >
Je ne peux pas trouver un moyen de résoudre ce problème. Ce serait une aide précieuse si quelqu'un pouvait me dire ce que je fais de mal ici.
Merci d'avance.
Impossible de reproduire: http://pastie.org/5805403. Etes-vous sûr d'avoir ouvert un IRB frais pour le test? –