使用来自另一个出售宝石中的一个出售宝石的Minitest扩展时的LoadError

时间:2013-12-03 13:40:51

标签: ruby-on-rails ruby bundler minitest

我有一个Rails 3.2应用程序的两个销售宝石的问题。一个gem是Minitest扩展,另一个是应该在其测试套件中使用Minitest扩展的代码。由于两者都在开发中,因此两者都被出售并且尚未推送到Rubygems。

为了重现这个问题,我已经引导了一个裸Rails 3.2应用并向vendor/gems添加了两个宝石:minitest-great_expectations(从Github克隆的Minitest扩展工作)和mygem它只报告和测试它的版本。

首先让我们尝试使用路径中的minitest-great_expectations gem:

git clone https://github.com/svoop/minitest_sandbox.git
cd minitest_sandbox/vendor/gems/mygem/
cat Gemfile      # note "path:"
bundle install   # note "Using minitest-great_expectations (0.0.5) from source at ../minitest-great_expectations"
ruby test/lib/mygem/version_test.rb   # => test_helper.rb:6 - cannot load such file -- minitest/great_expectations (LoadError)

现在和Rubygems的minitest-great_expectations gem相同。编辑Gemfile并使用不带"路径的行:"。

$EDITOR Gemfile   # remove the "path: ..."
bundle install    # note "Installing minitest-great_expectations (0.0.5)"
ruby test/lib/mygem/version_test.rb   # => PASS

自安装gem以来,现在可以恢复。但是,Gemfile是否包含"路径并不重要:"或不。使用gem uninstall minitest-great_exceptions明确卸载gem,然后再返回LoadError。

知道这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

您应该正在运行bundle exec ruby test/lib/mygem/version_test.rb

路径gems是Rubygems特定于Bundler的扩展,因此正确设置加载路径需要bundle exec