mcpField
M
moai-lang-ruby

moai-lang-ruby

github.com/modu-ai開発1.2k55 回インストール今日更新
リポジトリ

moai-lang-ruby について

Ruby 3.3以降とRails 7.2を扱う、Rubyアプリの開発・テスト向けスキルです。モダンなRubyの書き方に加え、Rails、Hotwire、ActiveRecord、Sidekiq、RSpecの実践パターンをまとめています。

主な機能

  1. 01Ruby 3.3の言語パターン
  2. 02Rails 7.2のアプリパターン
  3. 03Hotwire TurboとStimulus
  4. 04ActiveRecordのモデルとクエリ
  5. 05RSpecのテストとファクトリー
  6. 06Sidekiqのバックグラウンドジョブ

活用シーン

  1. 01Railsのコントローラーとモデルの構築
  2. 02Turboによる画面更新の追加
  3. 03RubyコードのRSpecテスト作成
  4. 04バックグラウンドジョブのワークフロー設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/modu-ai/moai-adk --skill moai-lang-ruby

インストール後、Claude Code で/moai-lang-rubyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

modules/
advanced-patterns.md
testing-patterns.md
references/
examples.md
reference.md

詳細

クイックリファレンス(30秒)

Ruby 3.3 以降の開発スペシャリスト — Rails 7.2、ActiveRecord、Hotwire/Turbo、RSpec、最新の Ruby パターン。

自動トリガー:拡張子が .rb のファイル、Gemfile、Rakefile、config.ru、Rails または Ruby に関する議論

主な機能:

  • Ruby 3.3 の機能:YJIT の本番環境対応、パターンマッチング、Data クラス、無限メソッド
  • Web フレームワーク:Turbo、Stimulus、ActiveRecord を備えた Rails 7.2
  • フロントエンド:SPA のような操作性を実現する Turbo と Stimulus を含む Hotwire
  • テスト:ファクトリー、リクエストスペック、システムスペックを使用する RSpec
  • バックグラウンドジョブ:ActiveJob と Sidekiq
  • パッケージ管理:Gemfile を使用する Bundler
  • コード品質:Rails cop を備えた RuboCop
  • データベース:マイグレーション、関連付け、スコープを備えた ActiveRecord
クイックパターン

Rails コントローラーパターン:

ApplicationController を継承する UsersController を作成します。show、edit、update、destroy アクションでのみ呼び出される set_user の before_action を追加します。index メソッドを定義し、User.all をインスタンス変数に代入します。user_params を使って新しい User を作成する create メソッドを定義します。respond_to ブロックを使用し、format.html では成功時にリダイレクトし、それ以外の場合は unprocessable_entity ステータスで new をレンダリングします。また、Turbo のレスポンスには format.turbo_stream を使用します。params の id で検索する set_user の private メソッドを追加します。user を必須とし、name と email を許可する user_params メソッドを追加します。

ActiveRecord モデルパターン:

ApplicationRecord を継承する User モデルを作成します。dependent destroy を設定した posts の has_many と、dependent destroy を設定した profile の has_one を定義します。email に対し、presence、uniqueness、および URI::MailTo::EMAIL_REGEXP を使用した format のバリデーションを追加します。name に対し、presence と最小 2、最大 100 の length のバリデーションを追加します。active が true のレコードを絞り込む active スコープを定義します。created_at の降順で並べ替える recent スコープを定義します。first_name と last_name をスペースで結合して空白を除去した値を返す full_name メソッドを作成します。

RSpec テストパターン:

User モデルの type を指定して RSpec.describe を作成します。describe の validations ブロック内に、email に対する validate_presence_of と validate_uniqueness_of の期待値を追加します。full_name の describe ブロック内で let を使用し、first_name が John、last_name が Doe の user を作成します。user.full_name が John Doe と等しいことを期待する it ブロックを追加します。


実装ガイド(5分)

Ruby 3.3 の新機能

YJIT の本番環境対応:

YJIT は Ruby 3.3 でデフォルトで有効になり、Rails アプリケーションのパフォーマンスを 15~20 パーセント向上させます。ruby を yjit フラグ付きで実行するか、環境変数 RUBY_YJIT_ENABLE に 1 を設定して有効にします。RubyVM::YJIT.enabled? メソッドを呼び出して状態を確認します。

case/in によるパターンマッチング:

response パラメーターを受け取る process_response メソッドを作成します。パターンマッチングには response と in を使った case を使用します。status が ok の場合は data にマッチさせ、data 変数を取り出して成功メッセージを puts します。status が error の場合は message にマッチさせ、msg 変数を取り出します。pending または processing かを確認するガード条件付きで status にマッチさせます。不明なレスポンスには else を使用します。

不変の構造体向け Data クラス:

name と email のシンボルを指定して Data.define で User を作成します。ブロックを追加して、name を含む挨拶メッセージを返す greeting メソッドを定義します。キーワード引数で User インスタンスを作成します。name プロパティにアクセスし、greeting メソッドを呼び出します。

無限メソッド定義:

Calculator クラスを作成し、単一の式からなるメソッドに等号構文を使用して add、multiply、positive? メソッドを定義します。

Rails 7.2 のパターン

Gemfile でのアプリケーション設定:

ソースを rubygems.org に設定します。rails のバージョン制約として 7.2、pg は 1.5、puma は 6.0 以降を指定し、turbo-rails、stimulus-rails、sidekiq は 7.0 を追加します。development と test のグループには、rspec-rails 7.0、factory_bot_rails、faker、require false を指定した rubocop-rails を追加します。test グループには capybara と shoulda-matchers を追加します。

Concern を使ったモデル:

ActiveSupport::Concern を拡張する Sluggable モジュールを作成します。included ブロックに、create 時に generate_slug を呼び出す before_validation と、slug の presence および uniqueness を検証する処理を追加します。slug を返す to_param を定義します。title が存在し、slug が空の場合に、title をパラメーター化して slug に設定する private メソッド generate_slug を追加します。Sluggable を include する Post モデルを作成し、belongs_to user、dependent destroy を指定した has_many comments、has_many_attached images を追加します。バリデーションと published スコープも追加します。

サービスオブジェクトパターン:

user_params を受け取る initialize を持つ UserRegistrationService を作成します。User を作成し、ActiveRecord::Base.transaction を使ってユーザーを保存し、プロフィールを作成してウェルカムメールを送信する call メソッドを定義します。success が true、user を含む Result を返します。RecordInvalid を rescue し、success が false、errors を含む Result を返します。create_profile と send_welcome_email の private メソッドを追加します。success、user、errors を持つ Data.define として Result を定義し、success? と failure? の述語メソッドを追加します。

Hotwire Turbo と Stimulus

Turbo Frames パターン:

index ビューで、posts を id とする turbo_frame_tag を使い、posts を反復処理してそれぞれを描画します。post パーシャルでは、post の dom_id を使った turbo_frame_tag を使用し、h2 のリンクと省略表示した内容の段落を含む article を配置します。

Turbo Streams パターン:

コントローラーの create アクションで、current_user.posts から post を構築します。respond_to を使い、format.turbo_stream と、保存の成功に応じてリダイレクトまたは描画する format.html を指定します。create.turbo_stream.erb ビューでは、post を使った turbo_stream.prepend で posts に追加し、new_post フォームのパーシャルを使った turbo_stream.update でフォームを更新します。

Stimulus コントローラーパターン:

JavaScript のコントローラーファイルで、hotwired/stimulus から Controller をインポートします。input と submit の配列を static targets に指定し、Controller を拡張するデフォルトクラスをエクスポートします。validate を呼び出す connect メソッドを定義します。すべての input ターゲットに値があるかを確認し、それに応じて submit ターゲットの disabled を設定する validate メソッドを定義します。

RSpec テストの基本

Factory Bot のパターン:

ファクトリーファイルで、email の sequence、name 用の Faker::Name.name、password 用の password123 を指定した user ファクトリーを定義します。role を admin シンボルに設定する admin trait を追加します。デフォルト値を 3 とする transient な posts_count を持つ with_posts trait を追加し、after create コールバックでユーザーの post を create_list で作成します。


高度な実装(10 分以上)

以下を含む包括的な内容については:

  • Docker と Kubernetes の本番環境デプロイパターン
  • ポリモーフィック、STI、クエリーオブジェクトなどの高度な ActiveRecord パターン
  • Action Cable のリアルタイム機能
  • パフォーマンス最適化手法
  • セキュリティのベストプラクティス
  • CI/CD 統合パターン
  • RSpec テストの完全なパターン

以下を参照してください:

  • 本番環境のパターンと高度な機能については modules/advanced-patterns.md
  • RSpec テストの完全なガイドについては modules/testing-patterns.md

Context7 ライブラリのマッピング

  • Ruby on Rails のウェブフレームワークについては rails/rails
  • RSpec テストフレームワークについては rspec/rspec
  • Rails 向け Turbo については hotwired/turbo-rails
  • Rails 向け Stimulus については hotwired/stimulus-rails
  • バックグラウンドジョブ処理については sidekiq/sidekiq
  • Ruby のスタイルガイド適用については rubocop/rubocop
  • テストデータのファクトリーについては thoughtbot/factory_bot

相性の良いツール

  • REST API とウェブアプリケーションアーキテクチャについては moai-domain-backend
  • SQL パターンと ActiveRecord の最適化については moai-domain-database
  • DDD とテスト戦略については moai-workflow-testing
  • AI を活用したデバッグについては moai-essentials-debug
  • TRUST 5 の品質原則については moai-foundation-quality

トラブルシューティング

よくある問題:

Ruby のバージョン確認:

バージョンフラグを指定して ruby を実行し、バージョンが 3.3 以降であることを確認します。ruby -e コマンドで puts RubyVM::YJIT.enabled? を実行して、YJIT の状態を確認します。

Rails のバージョン確認:

バージョンフラグを指定して rails を実行し、バージョンが 7.2 以降であることを確認します。bundle exec rails about を実行すると、環境の詳細情報を確認できます。

データベース接続の問題:

  • config/database.yml の設定を確認します
  • PostgreSQL または MySQL のサービスが実行中であることを確認します
  • データベースが存在しない場合は、rails db:create を実行します

アセットパイプラインの問題:

rails assets:precompile を実行してアセットをコンパイルします。コンパイル済みアセットを消去するには、rails assets:clobber を実行します。

RSpec のセットアップに関する問題:

初期セットアップでは rails generate rspec:install を実行します。単一のスペックを実行するには、特定のファイルパスを指定して bundle exec rspec を実行します。詳細な出力を表示するには、bundle exec rspec に format documentation を指定して実行します。

Turbo と Stimulus の問題:

JavaScript をセットアップするには、rails javascript:install:esbuild を実行します。Turbo をインストールするには、rails turbo:install を実行します。


最終更新日:2026-01-11 ステータス:アクティブ(v1.1.0)

コメント