あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

Rails 4.1 の secret.yml とは…

よく分からない実装でござ。


config/secret.yml が存在しない( 動作させたい対象 RAILS_ENV に相当する secret_key_base が存在しない )場合

  • rails s で召喚した rack server は、「Internal Server Error: secret.yml がないヨー」って言ってくる ( デーモン化せずに起動した場合、標準出力にも secret.yml が無いとエラー出力される)
  • Passenger with Apache2 では「Internal Server Error: error.log になんか CGI が動かない時の正体不明のログが出力されておわり」( production.log まで到達しない)

となるんだけど、まあ Passenger の方がとにかく 500 エラーなの!ぷんすこ!って怒るのは将来のバージョンで治るんかな?Rails からのログがどう渡ってるかわかんないので、調査は未来の自分に任す。

secret.yml を作る

簡単に解決しましょ、Rails 4.1 以降なら rails new した時点でユニークな値を設定して development: と test: は作成されます。無い場合は、touch <$RAILS_ROOT>/config/secret.yml ネー。

secret_base_key ってどうやって作ればいいの?規約は?

作り方は分かるが規約はわからねえ!Rails 4.1 のリリースノートを見る限り、「ユーザが自由に値を設定する事も出来る!」と書いてあるのでそれこそ最悪 SOMEKEY とかでもいいんじゃねえの?と思ってるけど眠いので覚えてたらこれも未来の自分に任せる!
ちなみに忘れかけてたけど、値を作るだけの rake が実装されているます!

[user@localhost ~]$ bundle exec rake secret RAILS_ENV=(development|test|production)

RAILS_ENV はいらんかもしれん、叩くと毎回ユニークな値が飛び出してきそう。これを主導でコピーアンドペーストじゃ。

雑感

秘密にしたい値を Rails 側から切り離す機構は用意したから、運用の方法(各々のリポジトリでどう運用するか)はユーザに任せるよ!みたいな感じなんすかね?
Rails 4.1 未満の既存アプリケーションで似たような機構を自前で実装してたりすると、Rails のアップデートはしたいけど自前の機構を引き継ぐので secret.yml はいらん!というような場合( gem に頼ってないパトゥーン )があると思うので、やっぱ secret.yml を disable にする設定とかないのかね?Upgrading Ruby on Rails — Ruby on Rails Guides あたり呼んだら書いてあるのかな?
なんかもう疲れて眠いし、かんこれの方の金剛ちゃんも摩耶とカーニバルしてそうでわしゃ辛い。いい加減寝よう。

あ、榛名 chang のバーニングラブが可愛かったです(小並感)。

参考:
Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides
Rails 4.1 リリースノート - つぶやき、メモ、写真、にゃど。
Rails 4.1.0ベータがリリースされたので主な新機能まとめ(1) - tkymtk's blog
Ruby on Rails 4.1 Release Notesを読んだ | 日々雑記