#ruby-on-rails #ruby #rbenv
Вопрос:
В моем проекте rails, когда я пытаюсь запустить сервер rails, я получаю следующую ошибку:
Your Ruby version is 2.7.0, but your Gemfile specified 2.7.2
Однако, когда я бегу ruby --version
, я получаю:
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
Кроме того, как rbenv global, так и rbenv local настроены на 2.7.2
В настоящее время запуск rbenv versions
возвращает
- система
- *2.7.2 (устанавливается /home/имя_пользователя/MyProject/my_project/.ruby-версия)
В обоих моих файлах Gemfile.lock и .ruby-версии указана версия ruby 2.7.2.
Кроме того, при запуске сервера я получаю сообщение «текущая версия пакета (2.1.2) старше версии, создавшей файл блокировки (2.1.4)», в то время как версия Bundler version 2.1.4
пакета проверяется.
Я не могу понять, почему в задаче используется совершенно другая версия ruby и bundler.
Комментарии:
1. Ты пробовал
bundle exec rails s
?2. Сообщение об ошибке:
the running version of Bundler....
не связано и не имеет отношения к проблеме.3. Вероятным виновником является то , что у вас возник конфликт между установками ruby — например, вы также установили систему
ruby
или использовали несколько менеджеров версий, таких какrvm
.4. Я понимаю, что это не имеет отношения к @TomLord. Я пытаюсь указать, что при использовании
bundle exec rails s
следует избегать системного ruby и использовать тот, который указан в файле Gemfile.5. @rdalpra Вы никогда не упоминали
bundle exec
об этом в своем вопросе. Вы только что сказали «при запуске сервера». И это предупреждение все равно может появиться, если вы установили только версию2.1.2
пакета для ruby2.7.2
. Чтобы исправить это, вам нужноgem update bundler
будет это сделать, но, как я уже сказал выше, я очень сомневаюсь, что это повлияет на вашу основную проблему здесь.
Ответ №1:
Вы тоже используете свой сервер rails с пакетом? Нравится:
$ bundle exec rails s
Потому что bundle будет использовать драгоценные камни из вашего файла драгоценных камней, вместо того, чтобы пытаться найти их по всему миру.
Если вы уже используете с bundle exec
, каковы преимущества:
$ which ruby
$ which bundle
Комментарии:
1.
$ which ruby
ВОЗВРАТ/home/sheriff/.rbenv/shims/ruby
. То же самое относится и к бандлу. Но$ which rails
возвращается/usr/local/bin/rails
. Я не уверен, почему прокладки не создаются для рельсов. Я пыталсяgem install rails rbenv rehash
2. linux попробуйте найти двоичные файлы в соответствии с порядком в вашем $PATH env var. Это означает, что вы установили rails глобально один раз, и он был установлен на
/usr/local/bin/rails
. Попробуйте принудительноrbenv
использовать двоичные файлы до/usr/local/bin
того, как они появятся на вашем ПУТИ, добавив в свои.bashrc
следующие строки:export PATH=$HOME/.rbenv/bin:$PATH
иexport PATH="$HOME/.rbenv/shims:$PATH"
Ответ №2:
Попробуйте сделать следующее.
gem install bundler:2.1.4
gem update --system