Несоответствие rbenv и gemsets (?), приводящее к сбоям в Cucumber
На прошлой неделе мои тесты на огурец начали проваливаться. Все они. Вот ошибка:
undefined method `split_stylesheet_link_tag' for #<#<Class:0x007ff9a433c390>:0x007ff9a6a848f8> (ActionView::Template::Error)
split_stylesheet_link_tag
это метод, который я имею из драгоценного камня css_splitter. Это найдено в моем application.html.haml
файл. (Следовательно, почему все тесты не выполняются; все они используют этот основной шаблон.) Загрузка представления о том, что тест Cucumber пытается загрузить работы в разработке. Другими словами, это только проблема в моей тестовой среде.
Вот где это становится странным. Я использовал RVM и пришел к выводу, что это проблема с моими наборами гемов, потому что именно этот камень раскрывает этот метод. Поэтому я переключился на 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
, Документы предположили, что это установит драгоценные камни в .gems
каталог в корне моего проекта. Бег bundle install
снова дал мне то же самое сообщение об установке драгоценных камней в ./vendor/bundle
и нет .gems
каталог в корне моего проекта. (Я предполагал, что добавление .gems
создаст один.)
я использую tmux
и, задаваясь вопросом, было ли это как-то связано с этой проблемой, я попытался запустить тесты вне tmux
и получил ту же ошибку.
Я также убедился, что мой .bash_profile
файл содержит eval "$(rbenv init -)"
и что я вернулся через rbenv
настроить. Я подтвердил, что оба rbenv
и его каталог прокладок на моем пути.
Я убедился, что css_splitter
находится в моем Gemfile и не вложен под group
,
Я вроде цепляюсь за соломинку здесь. Просто выкинь любые идеи.
1 ответ
По-видимому, это была проблема с моим конфигом. Драгоценные камни, очевидно, хранились в неправильном каталоге. Основываясь на этом ответе, я побежал rm -rf ~/.bundle/ ~/.gem/ .bundle/ Gemfile.lock
, Потом я побежал bundle install
,
Здесь стоит отметить, что это также устранило проблему, с которой я столкнулся rbenv-gemset
, То есть удаление этих каталогов вызвало bundle install
установить драгоценные камни в .gems
каталог в этом проекте, как и ожидалось. Я догадываюсь, почему моя тестовая среда имела доступ к гемам, как и ожидалось.