1

上周,我的 Cucumber 测试开始失败。他们全部。这是错误:

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

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

这就是它变得奇怪的地方。我使用的是 RVM,我得出的结论是我的 gemset 有问题,因为它是公开该方法的 gem。所以我切换到 rbenv,并运行了测试。他们工作了。

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

我试过的

谷歌搜索让我检查了.bundle/config. 它包含 BUNDLE_DISABLE_SHARED_GEMS: '1' 这听起来像是罪魁祸首,所以我将其更改为0并运行bundle install。它改回了1.

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

这似乎不对。

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

我正在使用tmux,并且想知道这是否与此问题有关,我尝试在外部运行测试tmux并得到相同的错误。

我还确保我的.bash_profile文件包含eval "$(rbenv init -)"并且我已经完成了rbenv设置。我已经确认两者rbenv及其 shims 目录都在我的路径上。

我确保它css_splitter在我的 Gemfile 中并且没有嵌套在group.

我有点抓住了这里的稻草。扔掉任何想法。

4

1 回答 1

1

这显然是我的捆绑器配置的问题。宝石显然存储在错误的目录中。根据这个答案,我跑了rm -rf ~/.bundle/ ~/.gem/ .bundle/ Gemfile.lock。然后我跑了bundle install

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

于 2014-09-18T00:01:07.160 回答