カテゴリー:
Rails
タグ:
 rails5 puma

このエントリーをはてなブックマークに追加
更新日時:
2017年10月25日(水)
作成日時:
2017年10月25日(水)

前の記事 / 次の記事

簡単そうで色々めんどい。

Railsの実行ユーザーは基本任意のユーザーであることと、
rbenvを使っている都合上、ユーザーの環境変数を読んでもらう必要があるのだけど、
systemdで仕込もうとすると、ユーザーの環境変数読んでくれないけど、
頑張って設定すれば読ませるようにすることもできるとかなってて超だるい。

調べたところcrontabでサクッと実現できたのでメモ。

参考:

どうやってcrontabに仕込むかは色々やり方があると思うけれど、
今回はwheneverを使うことにした。

wheneverというのは、dslで手軽にcrontabの設定情報を記述できるという便利なgemです。

一応インストールから

$ vi Gemfile

gem 'whenever', :require => false

$ bundle install
$ wheneverize .

これで config/schedule.rb というファイルができるのでこれを編集する。

$ vi config/schedule.rb

every :reboot do
 command "cd /var/www/appname/current \n
   && /home/username/.rbenv/bin/rbenv exec bundle exec puma \n
     -C /var/www/appname/shared/puma.rb --daemon"
end

command行を長いので複数行に分けてますが実際に記述する時は一行で。

次のコマンドで
[write] crontab file updatedと出ればとりあえずcrontabへの仕込みは完了です。

$ whenever --update-crontab
[write] crontab file updated

再起動して想定通りの動作が行われていれば設定成功です。

ちなみにcapistrano3でデプロイを行っている場合、
./Capfileで require "whenever/capistrano" を宣言、というかコメントアウトすることで、
デプロイ時に自動的にwheneveを実行してくれるようになります。便利。