rbenv和gemsets不匹配(?)导致黄瓜失败

时间:2014-09-17 22:02:42

标签: ruby-on-rails cucumber rbenv rbenv-gemset

上周,我的黄瓜测试开始失败。他们都是。这是错误:

undefined method `split_stylesheet_link_tag' for #<#<Class:0x007ff9a433c390>:0x007ff9a6a848f8> (ActionView::Template::Error)

split_stylesheet_link_tagcss_splitter gem中的一种方法。它位于我的application.html.haml文件中。 (因此,为什么所有测试都失败;它们都使用该主模板。)加载Cucumber测试试图加载的视图在开发中工作。换句话说,这只是我测试环境中的一个问题。

这是奇怪的地方。我正在使用RVM,我得出的结论是我的gemsets存在问题,因为它是暴露该方法的gem。所以我切换到rbenv,并运行测试。他们工作了。

我不确定在此期间我发生了什么变化(我知道,我知道),但我又一次失败了。如果您对回溯感兴趣,可以找到here

我尝试过什么

谷歌搜索导致我检查.bundle/config的内容。它包含 BUNDLE_DISABLE_SHARED_GEMS: '1' 这听起来像是一个罪魁祸首,因此我将其更改为0并运行bundle install。它将其更改回1

有趣的是,当我在这个Rails应用程序的根目录中运行bundle install时,我收到以下消息: Your bundle is complete! It was installed into ./vendor/bundle

这似乎不对。

我正在使用rbenv-gemset。当我运行cat .rbenv-gemsets时,我得到global。因此,我按照rbenv-gemsets的文档进行了操作,并将global更改为.gems。文档建议将宝石安装到项目根目录的.gems目录中。再次运行bundle install给了我关于将gems安装到./vendor/bundle的相同消息,并且在我的项目的根目录中没有.gems目录。 (我曾假设添加.gems会创建一个。)

我正在使用tmux,并且想知道由于this issue是否与它有关,我尝试在tmux之外运行测试并得到相同的错误。< / p>

我还确保我的.bash_profile文件包含eval "$(rbenv init -)",并且我已经通过rbenv设置返回。我已经确认rbenv及其shims目录都在我的路径上。

我确保css_splitter位于我的Gemfile中,而不是嵌套在group下。

我在这里抓住稻草。抛弃任何想法。

1 个答案:

答案 0 :(得分:1)

这显然是我的bundler配置问题。宝石显然存放在错误的目录中。基于this answer,我运行了rm -rf ~/.bundle/ ~/.gem/ .bundle/ Gemfile.lock。然后我跑了bundle install

值得注意的是,这也解决了我在rbenv-gemset时遇到的问题。也就是说,删除这些目录会导致bundle install按预期将gem安装到此项目的.gems目录中。也就是说,我猜测,为什么我的测试环境可以按预期访问宝石。