Tatehitoの技術メモ

ソフトウェアエンジニアです。いろいろ書きます。

【Capistrano】ローカルで precompile するようにしたら assets_roles がデフォルト設定されなくなった

デプロイ負荷軽減のため、ローカルで assets:precompile するように capistrano の設定を変更したら今まで動いていたデプロイタスクが動かなくなった。

動かなくなったタスクはこうなっている。

task :hoge do
  on roles(fetch(:assets_roles)) do
  ...
  end
end

原因は :assets_roles のデフォルト設定がされなくなったこと。:assets_rolesは デフォルトで :web が設定されるが、このデフォルト設定は Capfile

require 'capistrano/rails/assets'

としていた場合のみ有効となる。

今回、ローカルで assets:precompile するために require 'capistrano/rails/assets' を外していたためデフォルト設定がされなくなっていた。

ということで、:assets_roles を自前で設定すれば解決する。deploy.rb

set :assets_roles, [:web]

と記述すればOK 👍