#author("2021-12-30T03:11:44+00:00","default:src128","src128")
#author("2021-12-31T08:39:45+00:00","default:src128","src128")
&tag(Rails/アップグレード/6.0から6.1);
*目次 [#y7644e99]
#contents
*関連ページ [#de2dcf67]
*参考情報 [#f1327060]

*概要 [#jaf9f190]
-Rails 6.1はRuby 3以降に対応しているらしいが同時に実行している混乱するのでRuby 2.7環境のままアップグレードすることに。

*手順 [#be21ef8e]
-GemfileのRailsのバージョンを6.0系の最新版に置き換える。
-他、Rails 6.1でデモアプリを作成しGemfileを比較してアップデートしたほうがよさそうなのを更新。
#pre{{
ruby '2.7.5'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.4'
# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.5'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 5.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.4', require: false
}}
-bundle updateする
 bundle update
-設定ファイルの更新。古い設定ファイルを上書きしようとしてくるので基本Yesで応える。後からgit diffで差分を見ながら移植したほうがよさげ。
 bundle exec rails app:update
-IntelliJの場合、「Git > Compare with same repository version」で比較すると変更を戻せる。
-webpackerのinstall
 bundle exec rails webpacker:install

*トラブルシューティング [#r2cd90bc]

**db:migrateでエラー [#vf91d0c5]
-app:updateすると二つのマイグレーションファイルが作られる。実行するとAddServiceNameToActiveStorageBlobsで「column_exists?(:active_storage_blobs, :service_name)」のエラー。
-[[ruby on rails - PG::UndefinedTable: ERROR: relation "active_storage_blobs" does not exist - Stack Overflow:https://stackoverflow.com/questions/59857774/pgundefinedtable-error-relation-active-storage-blobs-does-not-exist]]によると、以下を実行してタイムスタンプを上記より前に設定すれば良いらしい。
 bundle exec rails active_storage:install

**`require': cannot load such file -- rss [#ica4cc34]
-rssはbundled gemになった。irbとかでは普通に使えるみたいだが、bundle execからはGemfileに明示しないといけないのか。
-[[standard librariesとdefault gemsとbundled gemsの違い - esm アジャイル事業部 開発者ブログ:https://blog.agile.esm.co.jp/entry/2021/01/27/192030]]。

**ckeditorのアイコンが表示されない [#be531596]
-sprocket-railsのバージョンアップが原因。application.rbに以下を追加する。
   config.assets.resolve_assets_in_css_urls = false

**Ruby 3.0.3で「include CarrierWave::RMagick」がrequireエラーに [#bff57fdb]
-initializerの下にある自前のcarrierwave.rbに含まれているモジュールが読み込めない。
-とりあえCarrierWave::RMagickの名前を変更して回避。

**Linuxサーバーにデプロイするとエラー [#ge658405]
-【Rails】Bundler 2.2.x以降は開発者が適切なプラットフォームを追加する必要がある
 $ bundle lock --add-platform ruby
 $ bundle lock --add-platform x86_64-linux



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS