Несоответствие 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 каталог в этом проекте, как и ожидалось. Я догадываюсь, почему моя тестовая среда имела доступ к гемам, как и ожидалось.

Другие вопросы по тегам