Подтвердить что ты не робот

Как перейти с рельсов 4.2.6 на рельсы 5.0

Есть ли способ консоли, я могу обновить свои рельсы до новой версии 5.0?

Или мне нужно вручную заменить каждый файл, который нужно обновить? Interne кажется смутным в том, чтобы дать мне решение этой проблемы.

4b9b3361

Ответ 1

Я только что прошел через это несколько дней назад, и это был мой (успешный) процесс:

Во-первых, убедитесь, что ваше приложение работает на Ruby 2. 2+ перед обновлением.

Затем обновите Rails до последней версии 4.x (прямо сейчас 4.2.7) и запустите свой набор тестов (или полностью примените свое приложение), просматривая журнал предупреждений об устаревании.

Исправьте эти амортизации, если вы найдете.

Внимательно прочитайте примечания к выпуску 5.0 и отметьте, что может повлиять на ваше приложение.

Проверьте ваш Gemfile с помощью Ready4Rails, который должен помочь вам сказать, какие у вас есть гемы, которые еще не готовы для Rails 5.

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

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

Некоторые люди посоветуют вам удалить номера версий в вашем Gemfile и bundle update. Я бы рекомендовал против этого для всего, кроме очень маленьких приложений. Изменение слишком большого количества вещей одновременно может усложнить отслеживание проблем.

Измените версию Rails, указанную в вашем Gemfile следующим образом:

gem 'rails', '= 5.0.0'

и запустить bundle update rails.

Это, скорее всего, не удастся, и вы получите список сравнений номеров версий, которые не удалось разрешить упаковщику. Ищите все зависимости, которые в конечном итоге требуют, чтобы рельсы были меньше 5, и посмотрите, можно ли их обновить.

Измените свою версию этого драгоценного камня, отмените изменение на версию для рельсов. bundle update этот драгоценный камень, снова запустите свой пакет (или попробуйте части своего приложения, которые используют эти драгоценные камни) и найдите устаревшие.

Зафиксируйте свой маленький шаг в процессе выполнения и повторяйте по мере необходимости, пока вы наконец не сможете закрепить Rails до 5.0.0.

Как только вы устраните эти блокирующие зависимости, и bundle update rails завершатся успешно, подтвердите это и снова запустите ваш тестовый набор.

Если ваш набор был чем-то похожим на мой, здесь будет стена устареваний, но обычно это всего лишь несколько вещей, повторяемых для каждого теста. Строго не нужно исправлять это прямо сейчас, но я бы решил заняться шумными... они могут усложнить поиск более важных. Мне пришлось изменить тонну спецификаций контроллера с post :foo, name: 'bar' на post :foo, params: { name: 'bar' } чтобы отключить предупреждение об устаревании синтаксиса именованных параметров.

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

Теперь вы должны запустить bin/rails rails:update, чтобы обновить ваши файлы конфигурации. Тщательно различайте каждый из них, чтобы искать изменения. Я предпочитаю копировать/вставлять строки из вывода diff и копировать их вручную в мою конфигурацию, корректировать, если это необходимо, и продолжать изменять, пока все, что я вижу, - это мои пользовательские настройки в diff.

После всего этого снова запустите ваши спецификации, откройте приложение и убедитесь, что оно работает как положено. Может быть полезно перенести это в промежуточную среду, чтобы убедиться, что она ведет себя и в производственной среде.

Просмотрите файл, созданный bin/rails rails:update (config/initializers/new_framework_defaults.rb), и посмотрите, можете ли вы отключить или закомментировать их, не влияя на поведение вашего приложения.

Поведение этих, а также других изменений обычно документируется в Руководстве по обновлению Ruby on Rails.

Надеюсь, вы закончили, но есть некоторые дополнительные тонкости, которые вы можете принести. Я переключаюсь в новый каталог и генерирую новое приложение Rails с rails new rails5project и rails new rails5project новые файлы, которые, вероятно, отсутствуют в вашем приложении, такие как app/models/application_record.rb и app/mailers/application_mailer.rb (и модели переходов для наследования от них вместо ActiveRecord::Base и ActionMailer::Base).

Кроме того, app/assets/javascripts/cable.js, app/assets/javascripts/channels, и app/channels, если вы хотите использовать ActionCable и app/jobs, если вы хотите использовать ActiveJob"

Затем посмотрите на свежий Gemfile приложении Rails 5 и, если хотите, возьмите все перечисленные там драгоценные камни. Например, Rails5 теперь поставляется с Turbolinks 5, Puma по умолчанию, listen и spring-watcher-listen.

Надеемся, что после всего этого у вас есть работающее приложение, которое по-прежнему отвечает всем вашим требованиям, работающее на Rails 5. Однако, если вы заблокированы из-за зависимости от гемов, надеюсь, вы сможете сохранить эту ветку, пока все не будет готово, и объединить ее!

Ответ 2

Просто следуйте этому примеру и убедитесь, что у вас есть минимальные требования к Ruby

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html

базовый способ сделать это (не совсем безопасно, но обновит его):

укажите в своем gemfile

gem 'rails', '5.0.0'

а затем в вашем терминале

bundle update rails

Ответ 3

Даже я пытаюсь обновить версию рельсов до рельсов 5

Это контрольный список для здесь

  • Измените версию ruby на 2.2.2

  • Создайте application_record.rb в app/models/ и добавьте:

    # app/models/application_record.rb
    class ApplicationRecord < ActiveRecord::Base
      self.abstract_class = true
    end
    

    и убедитесь, что все ваши модели наследуются от него.

    # app/models/user.rb
    class User < ApplicationRecord
    end
    
  • Создайте application_job.rb в app/jobs/ и добавьте:

    # app/jobs/application_job.rb
    class ApplicationJob < ActiveJob::Base
    end
    
  • Измените rails версию в Gemfile

    gem 'rails', '5.0.0'
    
  • Замените debugger с byebug.

    Отладчик не поддерживается Ruby 2.2, который требуется Rails 5.

    gem 'byebug'
    
  • объединить драгоценные камни

    bundle install
    

    bundle install выдаст ошибки или предупреждения для некоторых камней, изменит их версию на требуемую версию rails 5