Skip to content
Kosuke Tanabe edited this page Nov 18, 2018 · 31 revisions

enju_leafでのRails4.2系から5.1系へのアップグレード

enju_leaf-1.3系へのアップデートを参照してください。

enju_leafでのRails3.2系から4.2系へのアップグレード

アプリケーションを停止し、バックアップを取ります。バックアップを取らずにアップグレードを行わないでください。

$ cp -a your_enju_leaf your_enju_leaf_backup

Gemfile を編集します。

$ cd your_enju_leaf
$ vi Gemfile
  • railsのバージョン指定を変更します。
#gem 'rails', '3.2.22' # 変更前
gem 'rails', '4.2.7' # 変更後
  • 以下の行を削除します。
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end
  • 以下の行を追加します。
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'sdoc', '~> 0.4.0', group: :doc

group :development do
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

gem 'protected_attributes'
gem 'non-stupid-digest-assets'
  • 以下の行を変更します。
# gem 'jbuilder' # 変更前
gem 'jbuilder', '~> 2.0' # 変更後

bundle update を実行し、依存するライブラリを更新します。

$ bundle update

railsの設定ファイルの更新を行います。以下のコマンドを実行します。

$ bundle exec rake rails:update

設定ファイルを上書きするかどうかを以下のようにたずねてきます。以下の例では、 config/boot.rb を上書きするかどうかをたずねてきています。

$ bundle exec rake rails:update
    conflict  config/boot.rb
Overwrite /Users/yourname/your_enju_leaf/config/boot.rb? (enter "h" for help) [Ynaqdh]

以下のファイルでは "n" を、それ以外のファイルでは "y" を選択します。 操作を誤った場合、バックアップからファイルを書き戻し、再度同じコマンドを実行してください。

  • config/routes.rb
  • config/initializers/inflections.rb

以下のコマンドを実行します。

$ rails g friendly_id --skip-migration

config/initializers/friendly_id.rb を開き、以下の行を変更します。

# config.use :finders # 変更前
config.use :finders # 変更後

1.1.0.rc14以前をrails3系で新規インストールし、rails4系に変更して1.1.0.rc15以降にアップデートした場合は、以下の変更も必要となります(予約語のadminを削除する必要があります)。

config/initializers/friendly_id.rb:修正前

    config.reserved_words = %w(new edit index session login logout users admin stylesheets assets javascripts images)

この部分のadminを削除します。

config/initializers/friendly_id.rb:修正後

    config.reserved_words = %w(new edit index session login logout users stylesheets assets javascripts images)

config/application.rb を開き、以下の行をバックアップから追記します。

# config.time_zone = 'Central Time (US & Canada)' # 変更前
config.time_zone = 'Tokyo' # 変更後
# config.i18n.default_locale = :de # 変更前
config.i18n.default_locale = :ja # 変更後

config/environments/production.rb を開き、以下の行をバックアップから追記します。

Rails.application.configure do
  config.action_mailer.default_url_options = {host: 'localhost:3000'} # この行を追加
# config.cache_store = :mem_cache_store # 変更前
config.cache_store = :dalli_store # 変更後
  • WebサーバにApacheやnginxを使用しない場合、以下の行も変更します。なお、プロジェクトで配布している仮想マシンを使用している場合、変更する必要はありません。
# config.serve_static_assets = false # 変更前
config.serve_static_assets = true # 変更後

コンソールが開けるかどうかを確認します。

$ rails c production

コンソールを開いたら、以下のコマンドでフラグメントキャッシュを削除します。

> Rails.cache.clear
> exit

JavaScriptとCSSのキャッシュを再作成します。

$ bundle exec rake assets:precompile

アプリケーションが起動できるかどうかを確認します。

$ RAILS_ENV=production foreman start
Clone this wiki locally