0

我有一个 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. 为什么我需要在这个前面加上前缀才能让它运行?

为方便起见,这里是Domainatrix gemspec 的链接

4

2 回答 2

2

我的猜测是 domainatrix 是使用 Gemfile 中的:pathor:git选项声明的,它们都没有以使 ruby​​gems 可以访问它的方式安装 gem。

如果您从 Gemfile 中发布 domainatrix 行,则可以确认这一点。

于 2012-04-24T04:59:20.630 回答
0

尝试运行以下命令:

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

这不会解决您的 gem 的特定问题,但是bundle exec如果您使用 rvm,它将消除每次运行测试时都输入的必要性。

于 2012-04-24T05:16:52.613 回答