我有一个Rails应用程序,在`lib / services'下有一些非Rails相关的文件。其中一个文件使用Domainatrix gem。
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)
我的项目中的每个其他规范和gem都将在不使用bundle exec
的情况下运行。为什么我需要在这个前面添加前缀?
为方便起见,这里是link to the Domainatrix gemspec。
答案 0 :(得分:2)
我的猜测是,使用Gemfile中的:path
或:git
选项声明了domainatrix,这两个选项都没有以可以访问rubygems的方式安装gem。
如果您从Gemfile发布domainatrix的行,则可以确认。
答案 1 :(得分:0)
尝试运行以下命令:
$ rvm get head && rvm reload
$ chmod +x $rvm_path/hooks/after_cd_bundler
$ bundle install --without production --binstubs=./bundler_stubs
这不能解决宝石的具体问题,但是如果您使用rvm,每次运行测试时都需要输入bundle exec
。