Rabbit Slide Show

小規模個人アプリをRails 7.xにバージョンアップした話

2023-11-27

Description

[【出張版】Kyoto.rb Meetup 【大阪だよ】](https://kyotorb.connpass.com/event/296972/)のLT大会での発表資料です。

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

Other slides