Capistranoを使ってRailsのAssetsファイルの出力先を変更する
Ruby on RailsでAssetes ファイルをコンパイルするとデフォルトでは public/assets ディレクトリにコンパイルされたファイルが出力されます。 それを別のディレクトリに変更する場合の方法です。
そもそもなんで変更したいの?
私の遭遇したケースとしては、フロントと管理画面のアプリを同じサーバーで動かしたく、 Nginxの設定で以下のようにして、
location ^~ /admin/ { (略) proxy_pass http://admin_server; break; }
http://www.example.com/admin/ のリクエストをすべて、 管理画面側のソースを見るようにしたかったからです。 当然、cssやjsのassetsファイルも管理画面のソースをみて欲しかったので、
<script src="/admin/assets/application-27071e7192124c5d0f0cf003xxxxxxxxxxxxxxxxb1ce458f71db88cf.js">
のようになるようにすることを目的としています。
設定方法
設定方法は比較的簡単で、以下のとおりです。
config.assets.prefix
config/application.rbに以下を追加します。
config.assets.prefix = '/admin/assets'
もともとのデフォルトの設定は、以下です。
config.assets.prefix = "/assets"
Capistrano
また、Capistranoを使って、Production 環境にもassets.prefixの変更を反映させるためには config/deploy.rbに以下の設定も追加する必要があります。
set :linked_dirs, %w{(略) public/admin/assets} set :assets_prefix, 'admin/assets'
ハマった点として、
config.assets.prefixは 「/」 始まりですが、 Capistranoの設定の方は、 「/」 始まりでないので注意してください。
関連記事
チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)
- 作者: 池田尚史,藤倉和明,井上史彰
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る