2012-04-23 84 views
0

我有一個Rails應用程序,在`lib/services'下有一些與Rails無關的文件。其中一個文件使用Domainatrix gem爲什麼我需要bundle exec來要求這個rubygem?

require "domainatrix" 

class SuggestionParser 
    # various suggestion parsing methods 
end 

我在spec/lib下有這個文件的空指定。

require "services/suggestion_parser" 

describe SuggestionParser do 
end 

不幸的是,當我試圖運行規範不bundle exec我打了一個錯誤:

$: rspec spec/lib/services/suggestion_parser_spec.rb 
-> /Users/davidtuite/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require': cannot load such file -- domainatrix (LoadError) 

在我的項目將不使用bundle exec運行每隔規範和寶石。爲什麼我需要在這個前綴的前面加上前綴才能運行?

爲方便起見,這裏有一個link to the Domainatrix gemspec

回答

2

我的猜測是domainatrix是使用Gemfile中的:path:git選項來聲明的,它們都沒有以使rubygems可訪問的方式安裝gem。

如果您從Gemfile中發佈domainatrix的行,可以確認這一點。

+0

是的,我從Github上拉它,這可能是問題所在。我只是不知道該怎麼做,因爲我需要使用特定的叉子,而原始的寶石似乎沒有維護。 – 2012-04-24 16:08:02

+0

您能否詳細說明爲什麼':path'和':git'選項使rubygems無法訪問gem?我很好奇,如果這是可以修補的東西 – 2012-09-19 19:55:50

0

嘗試運行下面的命令:

$ rvm get head && rvm reload 
$ chmod +x $rvm_path/hooks/after_cd_bundler 
$ bundle install --without production --binstubs=./bundler_stubs 

這不會與你的寶石解決具體問題,但它會帶走的必要性,鍵入bundle exec每一個你,如果你運行你的測試時間使用rvm。

相關問題