#ruby-on-rails #rubygems
#ruby-on-rails #rubygems
Вопрос:
В проекте rails, который, как я знаю, работал совсем недавно, в пятницу, я внезапно получаю это сообщение при попытке выполнить какие-либо задачи rake:
You have already activated launchy 0.3.7, but your Gemfile requires launchy 0.4.0. Consider using bundle exec.
Подумав, что это странно, я проверил свой Gemfile, я нигде не вызываю launchy (хотя он появляется в моем Gemfile.замок).
При запуске bundle show launchy он информирует меня о том, что я использую:
Ruby192/lib/ruby/gems/1.9.1/gems/launchy-0.4.0
Я попытался запустить rake обновления пакета, повторно запустить bundle install и использовать как rake db: create, так и bundle exec rake db:create. Что изменилось?
Комментарии:
1. жестокое решение -> удалить gemfile. блокировка и установка пакета
Ответ №1:
Похоже, вы не используете RVM. Я бы настоятельно рекомендовал установить его.
Предполагая, что у вас установлена RVM и, например, Ruby 1.9.2-p180, я бы сделал следующее:
-
создайте набор драгоценных камней my_project:
rvm gemset create my_project
-
внутри папки проекта создайте
.rvmrc
файл, содержащий следующую строку:rvm use 1.9.2-p180@my_project
- запустите
cd .
внутри каталога проекта и примите все запросы; -
установите
bundler
gem:gem install bundler
- запустите
bundle
команду в корне проекта.
Это должно сработать. В моем примере я настаиваю на использовании RVM, поскольку это изолирует все драгоценные камни вашего проекта от системных. Как только вы запустите bundle
команду, Bundler будет управлять зависимостями за вас, поэтому, очевидно, нет необходимости явно указывать launchy
gem в вашем Gemfile.
Ответ №2:
В вашем gemfile укажите точную версию launchy, которая вам нужна, и запустите bundle
Ответ №3:
Я полагаю, что launchy используется capybara или cucumber. Помимо выполнения gem uninstall launchy
и переустановки вашего пакета, я бы рекомендовал явно добавить его в ваш Gemfile, чтобы избежать этой проблемы, поскольку здесь происходит что-то странное. Например:
group :test do
gem 'launcy', '=0.4.0'
end
Ответ №4:
open_gem
Установлен ли он в вашей системе? Он автоматически загружается rubygems
и требует запуска, что приводит к неприятным взаимодействиям с bundler. Попробуйте удалить его.
sudo gem uninstall open_gem
Подробности смотрите в этом сообщении в блоге.