Запуск приложения ruby ​​on rails локально - разные версии ruby - PullRequest
0 голосов
/ 09 октября 2018

Я использую RVM для управления различными версиями ruby, которые у меня есть.Одно конкретное приложение использует более старую версию ruby ​​(2.3.1), и я заметил, что, как только я перешел на эту версию и запустил rails server, она не работает, потому что мне нужно изменитьцелый каскад драгоценных камней или других файлов, таких как нокогири, чтобы заставить его работать.

Как правило, из того, что я прочитал в Интернете, мне нужно просто сделать bundle install, чтобы сделать все это перед запуском rails server.Тем не менее, он не работает, так как в этом файле есть более противоречивые вещи, а именно, что версии жестко закодированы в нем.

Исходя из этого, как я могу запустить это приложение на своем локальном сервере, есливыше шаги, которые я сделал, просто не работает?Я использую Ubuntu, если это поможет.

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Вы имеете дело с так называемыми проблемами зависимости.Задача Gemfile и Gemfile.lock состоит в том, чтобы гарантировать отсутствие проблем с зависимостями для приложения, и bundle install справится с этим.Тем не менее, в Gemfile обычно устанавливаются версии для блокировки определенной основной версии выпуска, что может допускать незначительные обновления версий.Это будет выглядеть примерно так:

#Gemfile
gem 'rails', '4.2.10'
gem 'pg', '0.20.0'

gem 'after_party', '~> 1.10' #minor version updates will run here
gem 'kaminari', '~> 1.1'

ruby '2.3.6'

Это краткий пример.Теперь, когда вы запустите bundle install, он убедится, что все совместимо с этими версиями.Во время работы bundle update обновит только версии с ~> до версии и обновит только второстепенные семантические версии, так как они не должны иметь критических изменений.

Итак, почему ваше приложение не работает?Ну, Gemfile должен был содержать рубиновую версию.RVM должен определить вашу версию ruby ​​в файле .ruby-version в базе вашего приложения rails и соответствовать версии в Gemfile.Если вам нужно обновить вашу версию ruby, то упаковщик поможет обеспечить совместимость всех ваших драгоценных камней с этой версией и друг с другом.Сначала вам нужно обновить версию ruby ​​с помощью RVM, а затем установить ее в Gemfile.

Однако нет гарантии, что устаревшие гемы будут совместимы.В этом весь смысл их блокировки, чтобы вы знали, какие версии стабильны в данный момент времени.Обновления / обновления для драгоценных камней должны быть проверены на совместимость, которая иногда может быть проектом.

Также см. Rails Bundle, конфликты драгоценных камней, лучший способ их решения

0 голосов
/ 10 октября 2018

вы можете добавить echo '2.3.1' > .ruby-version и echo 'newgemset' > .ruby-gemset в рабочую папку, а затем запустить

cd ./
rvm install ruby-2.3.1
gem install bundle
bundle install
0 голосов
/ 09 октября 2018

Вы можете создать файл .rvmrc или .ruby-version и .ruby-gemset для выделения драгоценных камней для ваших проектов.Вот официальная документация на это - https://rvm.io/workflow/projects#project-file-ruby-version

...