Ruby on Rails
https://gyazo.com/052e88b993c1ca6ecea6c3ba4c0a7aa8
概要
Rails自体もgemで提供されてる
Skinny Controller,Fat Model
目指している方向が真逆なため
Railsのトレードオフ
柔軟さ
CoC
柔軟さと引き換えに考える量・書く量を減らしているため
認知負荷を下げるために議論の余地がないことを増やす
疎結合さ
fat model
URL上のリソースからDBテーブルまでを意図的に密結合にしている
メモ
railsの良さを活かしつつもモダンな設計手法を取り入れるにはどうしたらいい?
railsはフレームワークに依存させることで開発コストを最小限にしている
ビジネスロジックとその組み立てを処理を全てModelに書けるようにして早くてキレイを実現したのがRails
コマンド
rails new hello_app
rails server
railse console
rails console --sandbox
コンソール終了でdbをロールバックしてくれる
rails test
rails generate scaffold User name:string email:string
rails db:migrate
rails db:rollback
rails db:migrate VERSION=0
DBを最初の状態に戻す
rails generate controller StaticPages home help
rails g
コントローラーとルートを作成
rails destroy controller StaticPages home help
削除して戻せる
rails generate model User name:string email:string
モデル作成
rails destroy model User
削除して戻せる
rails cでctrl + R
履歴検索
RAILS_MAX_THREADS=1 WEB_CONCURRENCY=1 rails s
プロセス1 スレッド1でサーバー起動
WEB_CONCURRENCYはpumaのプロセス数を指定する
bin/rails dev:cache でローカル環境でキャッシュを有効化
rails runner "pp User.all"
Railsアプリケーションコンテキスト内で任意のrubyコードを実行する
一度だけ必要なスクリプトを実行するとかワンライナーで処理をちょちょっと実行したいとか
rails boot
railsの開発者とかがrailsの起動時までのロジックを確認したい時にrails r 1を実行して確認していた
railsを読み込んでそのコンテキストで1を評価しているのだが、意図が良くわからないので専用のbootコマンドが追加された感じ
参照