Text
Page: 1
小規模個人アプリを Rails 7.x にバー
ジョンアップした話
Kazuhiro NISHIYAMA
Kyoto.rb Meetup
2023-11-27
Powered by Rabbit 3.0.3
Page: 2
self.introduction
西山 和広
Ruby のコミッター
github など: @znz
株式会社 Ruby 開発 www.ruby-dev.jp
1/16
Page: 3
対象
個人メモ用アプリ https://github.com/znz/memo-app-r
scaffold をちょっと改造した程度の機能のみ
ログイン、検索
位置情報 ( これが欲しかったので自作 )
( 自分専用なので ) メモ本文は生 HTML が書ける
Dokku にデプロイ
2/16
Page: 4
更新バージョン
Rail 6.1.7.6 → 7.0.8 → 7.1.2
Ruby 3.1.4 → 3.2.2
3/16
Page: 5
更新方法
以下のように新規作成したアプリと比較
docker run --rm -it ruby:3.1.4 /bin/bash
gem i rails -v '~> 7.0.0'
rails new /tmp/hoge --database=postgresql
4/16
Page: 6
新規と比較して更新
Gemfile
config/environments/*.rb
5/16
Page: 7
bin/rails app:update
bin/rails app:update で更新
Active Storage の migration などの不要なものは除外してマージ
6/16
Page: 8
decaffeinate
テストを実行しようとすると *.coffee があるとエラーになった
https://github.com/decaffeinate/decaffeinate
https://decaffeinate-project.org/
を使って *.coffee を変換
7/16
Page: 9
turbolinks
turbolinks も Gemfile から削除していたのでエラー
turbo に書き換え
app/assets/javascripts/application.js から
//= require turbolinks を削除
(turbo の追加は必要なかった)
8/16
Page: 10
警告対応
to_s(:delimited) → to_fs(:delimited)
9/16
Page: 11
assets:precompile 失敗
Dokku に deploy すると、なぜか rake assets:precompile でエ
ラー
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
LoadError: cannot load such file -- coffee_script
原因不明なので coffee-rails を Gemfile に戻した。
10/16
Page: 12
ruby も更新
ついでに ruby も 3.2.2 に更新
ruby file: ".ruby-version" はデプロイでエラー
ruby File.read(".ruby-version").chomp にした
11/16
Page: 13
new framework defaults
config.load_defaults 7.0 に更新
new_framework_defaults_7_0.rb を削除
デプロイするとログアウトしていたのでログインしなおし
12/16
Page: 14
7.1 に更新
以下と比較して Gemfile を更新
docker run --rm -it ruby:3.2.2 /bin/bash
gem i rails
rails new /tmp/hoge --database=postgresql
13/16
Page: 15
app:update
bin/rails app:update
Active Storage の migration は除外してマージ
14/16
Page: 16
デプロイ
テストも問題なく通るのでデプロイ
問題なく動いてそう
Rails 7.0 から 7.1 は Rails のバージョンを上げるだけならあっ
さりできた
15/16
Page: 17
今後
new_framework_defaults_7_1 はまだ未対応なので対応予定
JavaScript の位置情報取得部分もテストしたい
Rails 標準の minitest を試しているが、単純なテストのみなので
rspec と両方にしたい
bootstrap 4 のままなので、更新か他のものに移行したい
位置情報取得部分を jQuery から移行したい
coffee-rails は調査不足で原因不明のままだが sprockets を消
せば解決すると期待したい
Powered by Rabbit 3.0.3
16/16