読者です 読者をやめる 読者になる 読者になる

ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

Capistranoを使ってRailsのAssetsファイルの出力先を変更する

Nginx Rails Capistrano

f:id:jun9632:20160322161458p:plain

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の設定の方は、 「/」 始まりでないので注意してください。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

参考サイト

railsguides.jp