考えたら久々の投稿かもしれない。
ふとデプロイツールに興味を持ったので、
Capistrano3を触ってみてます。
cap production deploy
を実行した際に、assets:precompileが動作していなかったのでその時のメモ。
最初production.rb
の中身はこうでした。
set :stage, :production
set :bundle_path, -> { shared_path.join('./vendor/bundle') }
server 'localhost', user: 'rails', roles: %{app web db}
これだとなぜかassets:precompileが動作しない。
ググってたから下記の記事を発見。
capistrano3でproduction環境にdeployしたらassets precompileが走らなかった件 - syaka-syakaブログ
どうやらwebでしか動作しないようだ。
実際にソースを追ってみると、確かに97行目で決め打ちされている。
set :assets_roles, [:web]
じゃあproduction.rb
の中身はこれならいけるだろうとroleの順番を変更したが、動作しなかった。
set :stage, :production
set :bundle_path, -> { shared_path.join('./vendor/bundle') }
server 'localhost', user: 'rails', roles: %{web app db}
しばらく考えて
set :stage, :production
set :bundle_path, -> { shared_path.join('./vendor/bundle') }
server 'localhost', user: 'rails', roles: %{web}
server 'localhost', user: 'rails', roles: %{app db}
webとapp,dbを分けて記述することに。
こうやれば動いた。ああ、ちゃんと分けて書かないとダメなのか…
と、半日くらいハマっておりました。
全体の設定ファイルを置いておきます。
次は、ridgepoleを実行させてみたり、unicornとの連携をやってみようと思います。
おしま。
参考にしたサイト