Ruby on Rails 6,7,8

265 Views

November 19, 24

スライド概要

最近の機能を知って開発者体験を考える
2024-11-19
https://github.com/nishimotz/hello-rails
@nishimotz / @24motz

profile-image

Shuaruta Inc. ウェブアクセシビリティ基盤委員会 (WAIC) NVDA日本語版 すごい広島 with Python

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Ruby on Rails 6,7,8 最近の機能を知って開発者体験を考える 2024-11-19 https://github.com/nishimotz/hello-rails

2.

Rails 6の新機能とテスト戦略 • 機能 • Action Text: リッチテキスト編集が簡単に • テキストエリアのテスト追加 • Action Mailbox: メールの受信処理機能 • パラレルテスト(Parallel Testing)の導入 • テスト戦略 • Action Text:ビューのテストでWYSIWYGエディタの動作を確認 • Action Mailbox:受信メールのテストシナリオを追加 • パラレルテスト:複数のテストを同時に実行 • CI/CDのスピードを最適化

3.

Rails 7の新機能とテスト戦略 • 機能 • Hotwire(Turbo & Stimulus) • ページリロード不要のインタラクティブなUI • Async Query:非同期クエリのサポート • 複合プライマリキーのサポート • テスト戦略 • Hotwire:エンドツーエンド(E2E)テストでのUI反応確認を強化 • Async Query:非同期処理が関わるテストの信頼性を高める • 複合プライマリキー:複雑なデータ構造へのテストケースを追加

4.

Rails 8の新機能とテスト戦略 • 機能 • より強力なTypeScriptのサポート:TypeScriptを導入したテスト • RailsファーストのAPIモードの進化:API向けのテストを強化 • テスト戦略 • TypeScriptサポート • 型安全なテストが可能に、フロントエンドとバックエンドの統合テストを増やす • APIモードの進化 • APIエンドポイントのバリデーションやレスポンステストを強化

5.

Dev Container • Rails 7.2 から: rails new myapp --devcontainer

6.

rails-new • https://github.com/rails/rails-new • Docker をインストールする • バイナリをダウンロードする • tar xvfz する • rails-new バイナリにパスを通す • 例えば ~/bin/rails-new に置く

7.

Usage: rails-new [OPTIONS] <ARGS>... rails-new [OPTIONS] [ARGS]... <COMMAND> Commands: rails-help Prints `rails new --help` help Print this message or the help of the given subcommand(s) Arguments: <ARGS>... arguments passed to `rails new` Options: -u, --ruby-version <RUBY_VERSION> [default: 3.3.4] -r, --rails-version <RAILS_VERSION> [default: 7.2.0] -h, --help Print help -V, --version Print version % rails-new -u 3.3.6 -r 8.0.0 hello-rails --devcontainer % cd hello-rails % code .

8.

DevContainerを使うには • GitHub Codespaces • 無料プランでは限られた時間のみ使用可能 • Visual Studio Code とその拡張機能 "Dev Containers” • Rails ガイドの説明はこちら

9.

コンテナーで再度開く

11.

Ruby LSP の警告を無視する

12.

Docker Desktop

13.

新しいターミナル • rails –version • bin/rails server • Chrome で http://127.0.0.1:3000/

14.

git はどこでどう使うのか

15.

フォルダーをローカルで再度開く • ターミナルで見ている状態になる • こちらでコミットする

16.

開発コンテナーに戻る • こちらからソース管理してもいい?

17.

Hello と表示する • config/routes.rb • bin/rails generate controller Articles index --skip-routes • app/views/articles/index.html.erb • http://127.0.0.1:3000/articles

18.

開発コンテナーからgit • ローカルに戻す必要がない

19.

デバッグ環境を試す • bundle add debug • 実行とデバッグ • launch.json ファイルを作成

21.
[beta]
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Rails",
"type": "rdbg",
"request": "launch",
"command": "bin/rails",
"script": "s",
"args": [
"-b",
"0.0.0.0"
]
},
{
"name": "Debug Minitest with current file",
"type": "rdbg",
"request": "launch",
"command": "ruby",
"script": "${file}"
}
]
}

22.

debuggerコマンドで止まる • macOS から仮想マシンの ruby をデバッグできている

23.

ブレークポイントでも止まる

24.

Debug Minitest with current file • articles_controller_test.rb • the truth 有効化 • ファイルを開いた状態で実行

27.

gh repo create すると actions が落ちる • db/schema.rb doesn't exist yet

28.

ターミナルで rails db:migrate

29.

Actions が緑になる

30.

ci.yml の内容 • scan_ruby: brakeman でRuby コードの静的解析を行う • SQLインジェクション • マスアサインメント • セッション固定 • scan_js: JavaScript 依存関係のセキュリティ脆弱性 • XSS, CSRF, インジェクション攻撃, 認証認可 • 依存関係 • lint: RuboCop を実行 • コードスタイル、未使用変数、メソッド複雑度、不要な空行

31.

Kamalでデプロイにも活用 • DevContainer 内に Kamal をインストール • Docker がインストールされているサーバを用意 • コンテナ内のターミナルで kamal deploy を実行 • docker-in-docker (DinD) • GitHub Actions など CI/CD で推奨 • セキュリティ的に有利 • docker-outside-of-docker (DoD) • macOS, Windows, Linux など一般的な開発環境で推奨 • 性能的に有利 • SSH 経由で Kamal がサーバに接続してデプロイ