Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

Kazuhiro NISHIYAMA

November 27, 2023
Tweet

More Decks by Kazuhiro NISHIYAMA

Other Decks in Technology

Transcript

  1. 小規模個人アプリをRails 7.xにバー
    ジョンアップした話
    Kazuhiro NISHIYAMA
    Kyoto.rb Meetup
    2023-11-27
    Powered by Rabbit 3.0.3

    View full-size slide

  2. self.introduction
    西山 和広
    Ruby のコミッター
    github など: @znz
    株式会社Ruby開発 www.ruby-dev.jp
    1/16

    View full-size slide

  3. 対象
    個人メモ用アプリ https://github.com/znz/memo-app-r
    scaffold をちょっと改造した程度の機能のみ
    ログイン、検索
    位置情報 (これが欲しかったので自作)
    (自分専用なので)メモ本文は生HTMLが書ける
    Dokku にデプロイ
    2/16

    View full-size slide

  4. 更新バージョン
    Rail 6.1.7.6 → 7.0.8 → 7.1.2
    Ruby 3.1.4 → 3.2.2
    3/16

    View full-size slide

  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

    View full-size slide

  6. 新規と比較して更新
    Gemfile
    config/environments/*.rb
    5/16

    View full-size slide

  7. bin/rails app:update
    bin/rails app:update で更新
    Active Storage の migration などの不要なものは除外してマージ
    6/16

    View full-size slide

  8. decaffeinate
    テストを実行しようとすると *.coffee があるとエラーになった
    https://github.com/decaffeinate/decaffeinate
    https://decaffeinate-project.org/
    を使って *.coffee を変換
    7/16

    View full-size slide

  9. turbolinks
    turbolinks も Gemfile から削除していたのでエラー
    turbo に書き換え
    app/assets/javascripts/application.js から
    //= require turbolinks を削除
    (turbo の追加は必要なかった)
    8/16

    View full-size slide

  10. 警告対応
    to_s(:delimited) → to_fs(:delimited)
    9/16

    View full-size slide

  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

    View full-size slide

  12. ruby も更新
    ついでに ruby も 3.2.2 に更新
    ruby file: ".ruby-version" はデプロイでエラー
    ruby File.read(".ruby-version").chomp にした
    11/16

    View full-size slide

  13. new framework defaults
    config.load_defaults 7.0 に更新
    new_framework_defaults_7_0.rb を削除
    デプロイするとログアウトしていたのでログインしなおし
    12/16

    View full-size slide

  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

    View full-size slide

  15. app:update
    bin/rails app:update
    Active Storage の migration は除外してマージ
    14/16

    View full-size slide

  16. デプロイ
    テストも問題なく通るのでデプロイ
    問題なく動いてそう
    Rails 7.0 から 7.1 は Rails のバージョンを上げるだけならあっ
    さりできた
    15/16

    View full-size slide

  17. 今後
    new_framework_defaults_7_1 はまだ未対応なので対応予定
    JavaScript の位置情報取得部分もテストしたい
    Rails 標準の minitest を試しているが、単純なテストのみなので
    rspec と両方にしたい
    bootstrap 4 のままなので、更新か他のものに移行したい
    位置情報取得部分を jQuery から移行したい
    coffee-rails は調査不足で原因不明のままだが sprockets を消
    せば解決すると期待したい
    16/16
    Powered by Rabbit 3.0.3

    View full-size slide