2012-04-23 52 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。

相关问题