我有是建立在文件的下列結構的定製的寶石:定製的寶石作品在IRB,而不是在一個Ruby腳本
something/common/searchcommon.gemspec
something/common/lib/searchcommon.rb
something/common/lib/commonfiles/scommon.rb
something/common/lib/commonfiles/token_stream.rb
something/common/lib/commonfiles/rbbi.rb
我gemspec文件看起來像這樣:
Gem::Specification.new do |s|
s.name = 'searchcommon'
s.version = '0.0.0'
s.date = '2012-04-28'
s.summary = "Search Common classes"
s.description = "Contains the common classes for search"
s.authors = ["some author"]
s.email = '[email protected]'
s.files = ["lib/searchcommon.rb","lib/commonfiles/scommon.rb","lib/commonfiles/rbbi.rb","lib/commonfiles/token_stream.rb"]
end
我能夠毫無問題地構建和安裝gem。
它也適用於IRB:
>> require 'searchcommon'
=> true
不過,我有一個腳本這將需要這種寶石。腳本包括創業板如下:
#!/usr/local/bin/ruby
require 'rubygems'
require 'searchcommon'
我得到的錯誤將引發以下堆棧跟蹤:
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- scommon (LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/searchcommon-0.0.0/lib/commonfiles/rbbi.rb:1
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/searchcommon-0.0.0/lib/searchcommon.rb:1
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60:in `require'
from ./mapper.rb:3
的錯誤路線是「規定‘commonfiles/rbbi’」內lib/commonfiles/searchcommon.rb
rbbi.rb裏面有這個錯誤的行是「require」scommon'「它也存在於同一個文件夾中。
我無法理解爲什麼在腳本中無法正常工作,因爲我可以在IRB中使用gem。
我看過this question on SO,但它並沒有完全解決同樣的問題。
任何幫助,將不勝感激。
編輯:刪除了一些令人困惑的文件名並將其替換。
您在腳本中有'searchcommon',錯誤中有'search_common'。那它是哪一個? –
'searchcommon'是寶石的名稱。 'search_common'是由'rbbi.rb'等文件使用的內部庫文件。 – Nikhil
更改文件名以防止混淆。 – Nikhil