上周,我的黄瓜测试开始失败。他们都是。这是错误:
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,我得出的结论是我的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
下。
我在这里抓住稻草。抛弃任何想法。
答案 0 :(得分:1)
这显然是我的bundler配置问题。宝石显然存放在错误的目录中。基于this answer,我运行了rm -rf ~/.bundle/ ~/.gem/ .bundle/ Gemfile.lock
。然后我跑了bundle install
。
值得注意的是,这也解决了我在rbenv-gemset
时遇到的问题。也就是说,删除这些目录会导致bundle install
按预期将gem安装到此项目的.gems
目录中。也就是说,我猜测,为什么我的测试环境可以按预期访问宝石。