Rails3.1+capistranoの続き的なもの。
しばらくローカルでassets:precompileする運用をやっていたが、色々問題があった。具体的には以下のような感じ。

  • デザインの細かな修正ごとにprecompileするので、コミットがassets:precompileだらけになる。
  • precompileした状態でdevelopment環境をロードすると、coffeescriptで書いた関数が2回実行されたりおかしなことになる。
  • Rails3.2だとprecompile時にデフォルトでproductionデータベースに接続しようとするので、そのままのdatabase.ymlのままローカルで実行するとエラーになる。(これは一応RAILS_ENV=development rake assets:precompileで解決可能)


と言うわけで改善を試みた。
参考にしたのはstackoverflowのこのスレ

まず、Capfileにload ‘deploy/assets’を追加する。この時、必ずload ‘config/deploy’よりも先にすること。そうしないと後述のnamespaceが有効にならない。
次にdeploy.rbに以下のnamespaceを定義。

これでassetsのnamespaceが上書きされ、app/assets以下に変更があった時のみリモートでassets:precompileが行われるようになる。
万事解決良かった良かった。

のはずが、環境によってはprecompileが失敗することがある(この問題?)。ソースを追っかけたけどよく分からなかった。3.2.2で解決したかなぁ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>