0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cursorを使いながら、猫でもわかるHotwire入門 Turbo編をやってみた#1

Posted at

Hotwireの入口としてお勧めしてもらった記事を読んでいく。

Hotwireの特長

HotwireはWebSocket必須ではないという話

これまでREST APIばかりやってきたので、WebSocket試してみたいな…と思いつつ、今回はGraphQLを使うことにしたので、素のWebSocketではなくGraphQL Subscriptionになるかも。

Hotwireはfetchに対してJSONではなくHTMLをレスポンスする

モデルやバリデーションをサーバーサイドに寄せられる。

Turbo - Turbo Drive/Turbo Frames/ Turbo Streams

  • Turbo Drive: 画面表示部分を差し替えて非同期処理にし、全体の表示を高速化してくれる

  • Turbo Frames: 特定のタグで囲った範囲のみを更新できる

  • Turbo Streams: 複数の要素を指定して更新できる

turbo-rails

RailsからTurboを便利に使うためのgem

Stimulus

Turboを使っていれば基本的にJavaScriptは書かなくて良くなるが、複雑になるとJavaScriptを書く必要が出てくる。その場合にStimulusを使って、カオスになりがちなJavaScriptコード上にレールを敷くことができる。

Hotwire

Turbo + Stimulusのこと。

チュートリアル1 Railsで管理画面を作る

rails newして、設定をいくつか追加する。

...

最初のbin/devで躓いた。
image.png

application.cssファイルが存在しないことによるエラーなので、ファイルを追加した。

sassc-railsも不足していたとエラーになったのでそちらも対応した。

今度はBootstrapのSCSSファイルが見つからないというエラー。
cursorにやってもらおうとしたら、インストールされていないyarnを使おうとしていたので、npmを使うように指示。(📝使用可能な選択肢を使用して欲しい)
CSSをビルドする際に依存関係エラーが出たので、いくつか追加でパッケージをインストール。(依存関係のあるパッケージは自動でインストールされないのだっけ...👀)

image.png

表示できた!

importmap-railsとjsbundling-rails

$ rails newのオプションで--css bootstrapを指定したけれども、その場合は自動的にjsbundling-railsを使うことになるよ。

なるほど...!

ページネーションの実装

Cursorにkaminariをインストールしてとお願いしたら、以下をスムーズに設定してくれた。

  1. Gemfileにkaminariを追加
  2. bundle installでkaminariをインストール
  3. 設定ファイル(config/initializers/kaminari_config.rb)を生成
  4. デフォルトのビューテンプレートを生成
  5. 日本語化の設定を追加

インストールと初期設定などは、公式でしっかりドキュメント化してあるので、生成AIにとって得意な作業領域なのかも。

image.png
ページネーションを適用してもらった時に、New catボタンが巻き込まれてしまったので修正を依頼...
image.png

Cursorが作ってくれたコードが絶妙に惜しかったので手入力しようとしたところ...

image.png

image.png
チュートリアルのコードに極めて近いコードが提案されてびっくり👀

実装を確認しようとすると、Ransackのエラーに遭遇したので、
image.png
モデルにransackable_attributesを定義
image.png

image.png
いい感じだ!

image.png

ソート機能もスムーズにつけられた

Bootstrap5で見た目を整える

🐱 変更量が多いので、こちらのコミットを参考にしてね。

とのことでしたが、CursorにBootstrap5を使って見た目を整えてとお願いしたら良い感じになった

image.png

image.png

ページネーションの部分と、その下のボタンの下に余白がないのがちょっとだけ惜しい!

インラインバリデーションの実装

  • モデルにバリデーションを追加
  • bootstrap_formをインストール
  • CSSを設定

内容が少し複雑だったので、「モデルにバリデーションを追加」とbootstrap_formフォームからバリデーションを削除する部分は、Cursorへの命令を分割した。

感想

Cursor

Cursorを使うことで、最初の立ち上げがとても速くなったと感じた。一方で、差分を注意深くみていかないと、たまに全く関係ない変更が入っていることがある。

Hotwire

説明を読んだことで、Hotwireのイメージが掴めた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?