怖いrails
DESCRIPTION
社内勉強会用TRANSCRIPT
怖いRails株式会社OCC
Yutaka Kinjo
motivationGitHub の Contritions のカレンダー好き
埋めたくなる
作ってみたい
謎の規約怖い
Rails は規約が定められている
規約に沿うことで高速な開発ができる
見えない規約に怯える日々が始まる
とりあえず rails new$ rails new acscore
何はともあれこのコマンド
開発に必要な一式が生成される
この状態で Github にpush
この状態で heroku にpush
heroku に deploy するときは production の db
は pg にする
とりあずdevise install$ gem ‘devise’
$ bundle install
$ rails g devise install
間違ってinstallモデルが生成される(T_T)
$ rails g devise:install
こっちが正解
config/initialize/deviser.b
config/locales/devise.en.yml
devise 続き$ rails g devise user
user model が生成
$ rake db:migrate
devise.rb に secret key を設定
ENV[‘DEVISE_SECRET_KEY’]
heroku 側に secret key を設定
$ heroku config:set DEVISE_SECRET_KEY=
user に紐づくScore
user
score
score
score
score
scaffold しちゃうよね
$ rails g scaffold Score user_id:integer
view/model/controller が生成
migration ファイルもできる
他にもいろいろ生成される怖い!
$ rake db:migrate でテーブル生成
scaffold しちゃうよね
$ rails g scaffold Score user_id:integer
view/model/controller が生成
migration ファイルもできる
他にもいろいろ生成される怖い!
$ rake db:migrate でテーブル生成
user_id が規約
model名_id
Relationuser model
has_many :scores
score model
belongs_to :user
関係性を Rails に教えてあげる
あとは カラムに持っているuser_id で紐付く
current_user.scores
なにそれ怖い!
ここから
home page を作りたい $ rails g controller home index
home という controller と
views/home/index.html.erb
home controller
before_filter :authenticate_user!
認証していないアクセスは飛ばされる
これは別に怖くない!
結果から
これができた
http://pure-eyrie-5569.herokuapp.com/https://github.com/yutakakinjyo/acscore
結果から
いや、こうしたい...
まあ、おいおいね
MVC怖いhome controller でやってること
現在の時刻から一ヶ月前を取得
一ヶ月前から現在までの日数を計算
一日ずつ走査してScoreの日付と同様なら+1する
スコアが一定以上なら色をlightgreenにする
最終的に日付と色を view に引き渡す
MVC怖いhome#index view でやってること
controller から渡ってきた配列の数だけtableの列を生成し、bgcolor を設定する
score model がやってること
なし
どこにどうあるべき?
MVC怖いscore model
日数とスコアの配列を返すべき?
home#index view
必須の配列をスコアから色を計算するべき?
controller
引き渡すだけ?
まとめ
目にみえない規約に怯える毎日
もう書いてさっさと失敗したほうが良さそう
次回
リファクタしてきます!