我正在學習ruby,我想測試如何創建gem文件。我在我的機器中安裝了以下內容。 紅寶石1.9.3p362(2012-12-25的修訂38607)[x86_64的Linux的] 捆紮機版本1.2.3 耙,版本10.0.3創建紅寶石
我創建使用bundle gem hello_gem
寶石。我將以下示例代碼添加到hello_gem.rb
module HelloGem
class Base
def self.hello
puts "Hello Ruby Gem #{HelloGem::VERSION}"
end
end
end
我的文件夾結構如下所示。
├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│ ├── hello_gem
│ │ └── version.rb
│ └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
然後我使用rake install
創建了寶石。然後我開始irb
,我可以執行以下操作。
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 >
問題出現在我想將代碼移動到lib文件夾中。我創建了lib/hello_gem/base.rb
並在其中添加了上述代碼。而在hello_gem.rb
我剛使用require "hello_gem/base"
。現在我的項目如下所示。
├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│ ├── hello_gem
│ │ ├── base.rb
│ │ └── version.rb
│ └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
當我建立使用rake install
和使用irb
測試下面的錯誤發生的寶石。
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 >
我無法找到解決此問題的方法。如果有人能告訴我我在這裏做錯了什麼,這將是一個很大的幫助。
在此先感謝。
無法複製:http://pastie.org/5805403。你確定你打開了一個新的IRB進行測試嗎? –