Turbo 環境の構築: 小林研 Rails Tips (62)

このページの内容は以下のリポジトリに1日遅れで反映されます(記事執筆前に前日分をコミットしています)。

https://github.com/hkob/hkob_blog

はじめに

Rails Tips の 62 回目です。rails インストール時に bundle をスキップしたせいなのか、javascript などの設定までもがスキップされていたようです。

Rails をはじめよう - Railsガイド

importmap のインストール

まず、importmap がインストールされていないようなので、まず rails で importmap をインストールしました。すでに haml 化してしまったので、application.html.erb が修正できなかったとエラーになっています。

$ bin/rails importmap:install
       apply  /Users/hkob/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/importmap-rails-2.0.1/lib/install/install.rb
  Default application.html.erb is missing!
          Add <%= javascript_importmap_tags %> within the <head> tag in your custom layout.
  Create application.js module as entrypoint
      create    app/javascript/application.js
  Use vendor/javascript for downloaded pins
      create    vendor/javascript
      create    vendor/javascript/.keep
  Configure importmap paths in config/importmap.rb
      create    config/importmap.rb
  Copying binstub
      create    bin/importmap
         run  bundle install
Bundle complete! 21 Gemfile dependencies, 122 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
         run  bundle lock --add-platform=x86_64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock
         run  bundle lock --add-platform=aarch64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock

このため、application.html.haml に javascript_importmap_tags を追加しました。

    = javascript_importmap_tags
    = stylesheet_link_tag "application", "data-turbo-track": "reload"

最後に turbo と stimulus もインストールします。これで hotwire のインストールが完了になります。

$ bin/rails turbo:install:importmap stimulus:install:importmap
       apply  /Users/hkob/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/turbo-rails-1.5.0/lib/install/turbo_with_importmap.rb
  Import Turbo
      append    app/javascript/application.js
  Pin Turbo
      append    config/importmap.rb
         run  bundle install
Bundle complete! 21 Gemfile dependencies, 122 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
         run  bundle lock --add-platform=x86_64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock
         run  bundle lock --add-platform=aarch64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock
Run turbo:install:redis to switch on Redis and use it in development for turbo streams
       apply  /Users/hkob/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/stimulus-rails-1.3.3/lib/install/stimulus_with_importmap.rb
  Create controllers directory
      create    app/javascript/controllers
      create    app/javascript/controllers/index.js
      create    app/javascript/controllers/application.js
      create    app/javascript/controllers/hello_controller.js
  Import Stimulus controllers
      append    app/javascript/application.js
  Pin Stimulus
  Appending: pin "@hotwired/stimulus", to: "stimulus.min.js"
      append    config/importmap.rb
  Appending: pin "@hotwired/stimulus-loading", to: "stimulus-loading.js"
      append    config/importmap.rb
  Pin all controllers
  Appending: pin_all_from "app/javascript/controllers", under: "controllers"
      append    config/importmap.rb
         run  bundle install
Bundle complete! 21 Gemfile dependencies, 122 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
         run  bundle lock --add-platform=x86_64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock
         run  bundle lock --add-platform=aarch64-linux
Writing lockfile to /Users/hkob/Library/CloudStorage/Dropbox/rails/hkob_blog/Gemfile.lock

この状態でサーバを起動すると削除リンクが機能しました。turbo_confirm も正しく機能し、ダイアログが表示されました。

おわりに

これで Turbo も発火し、単一のデータベースの CRUD が全て完了しました。次は Rails ガイドに戻り、二つ目の関連があるテーブルを追加します。