プロジェクト作成
$ rails new プロジェクト名 ($ rails new プロジェクト名 -d mysql) $ cd プロジェクト名 $ rails webpacker:install $ vi config/webpacker.yml
# check_yarn_integrity: true
自動生成
コントローラ作成 $ rails g controller top index モデル作成 $ rails g model space subdomain:string name:string モデル作成(リレーション含む) $ rails g model space_user space:references user:references ※作成したモデルにbelongs_toが追加される。 ※必要に応じて、相手のモデルにhas_manyを追加。一緒に消したい場合は「dependent: :destroy」も追加。 > class Space < ApplicationRecord > has_many :space_user, dependent: :destroy > class User < ApplicationRecord > has_many :space_user migrateファイル作成 $ rails g migration AddLabelToInfomations scaffold(モデル作成とコントローラの雛形作成) $ rails g scaffold space subdomain:string name:string メーラー作成 $ rails g mailer user_mailer タスク作成 $ rails g task user ジョブ作成 $ rails g job message
単数・複数形変換
$ rails c -s > "space".pluralize => "spaces" > "spaces".singularize => "space"
DB操作
マイグレーション $ rails db:migrate ($ rails db:migrate RAILS_ENV=production) バージョン確認 $ rails db:version 状態確認 $ rails db:migrate:status 1つ前に戻す $ rails db:rollback やり直し(レコードも消える) $ rails db:migrate:reset 初期データ作成 $ rails db:seed ($ rails db:seed RAILS_ENV=production)
その他
ルーティング確認 $ rails routes コンソール $ rails c コンソール(サンドボックス=変更が反映されない) $ rails c --sandbox タスク確認 $ rails -T ($ rake -T)
push前に
動作確認 $ rails s -> http://localhost:3000/ -> http://localhost:3000/rails/mailers 自動テスト $ rspec ファイル名(省略ですべて) 静的コード解析 $ rubocop ファイル名(省略ですべて) 自動補正 $ rubocop -a ファイル名(省略ですべて) 現在のエラーを暫定的に無効化(.rubocop_todo.yml作成。更新も可) $ rubocop --auto-gen-config ドキュメント生成 $ yard $ open doc/index.html または $ yard server --reload -> http://localhost:8808/ セキュリティチェック $ brakeman 現在のエラーを暫定的に無効化(brakeman.ignore作成。更新も可) $ brakeman -I Input file: |~/config/brakeman.ignore| ? 1 <- Inspect all warnings Action: (i, n, k, u, a, s, q, ?) i <- Add warning to ignore list Remove fingerprint? ? 1 <- Save changes Output file: |~/config/brakeman.ignore|
参考サイト
実装関連
- Railsドキュメント
- ActiveRecordのincludesは使わずにpreloadとeager_loadを使い分ける理由 - Qiita
- find_or_initialize_byとfind_or_create_byの違いとは? - Qiita
- 【Rails 4.2】find_each と find_in_batches の違いと使い分け&【Rails 5.0~】in_batches - Qiita
- Rails | ハッシュのキーを全てシンボルから文字列に変える ( stringify_keys / deep_stringify_keys ) - Qiita
- RailsのHTTPステータスのシンボル表現まとめ - Hack Your Design!
テスト関連
- Faker::Internet
- FactoryBot(FactoryGirl)チートシート:ファクトリの生成
- Rails5でコントローラのテストをController specからRequest specに移行する
- 使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」
- 今日から使える!RSpec 3で追加された8つの新機能