上周,我的 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
.
我有点抓住了这里的稻草。扔掉任何想法。