Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@YutoYasunaga

【Ruby on Rails】EC2でwheneverを使ってcrontabを設定する時のハマったことの解決

wheneverというのはRuby on Railsのgemであり、crontabを設定する時によく使われています。

使い方

使い方はGithubホームページに詳しく記載されていますが、主に使うのは下記になります。

Gemfileに追加

Gemfile
gem 'whenever', require: false

インストール

bundle exec wheneverize .

schedule.rbファイルの内容を確認する

whenever

開発環境でcrontabを更新する

whenever --update-crontab --set environment='development'

Capistranoに入れる

config/deploy.rb
set :whenever_roles, -> { :app }
Capfile
require 'whenever/capistrano'

ハマったことなどの解決

EC2では動かない

EC2にデプロイの後、crontabが動かず、ログ確認したらBundleバージョンが間違いなどの問題

job_typeを以下に設定すれば良い

config/schedule.rb
set :output, environment == 'development' ? 'log/crontab.log' : '/deploy/apps/<アプリ名/shared/log/crontab.log'
job_type :rake, 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd :path && RAILS_ENV=:environment bundle exec rake :task :output'

時間通りに動かない

タイムゾーンが間違い可能性が高いです。

タイムゾーン設定方法は:

config/schedule.rb
require 'active_support/core_ext/time'

def local(time)
  Time.zone = 'Asia/Tokyo'
  Time.zone.parse(time).localtime($system_utc_offset)
end

every 1.day, at: local('6:00 am') do # 日本時間毎朝6時に実行
  rake '<task>'
end

crontabのログにExecJS::RuntimeUnavailable エラーが出たとき

Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

Gemfileにmini_racerを追加すればいいです。therubyracerでも大丈夫ですが、Macにはインストールが難しいのでmini_racerを使います。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
YutoYasunaga
こんにちは。 プログラミングは私の趣味の一つです。現在は東京でシステムエンジニアとして働いています。 C、C++、C#、Javaなどの言語を使ったことがありますが、ほとんどRuby on Railsフレームワークを使ったウエブサイトを開発しています。 豆知識をメモする為、他のエンジニアさんに共有する為、このサイトに色々投稿したいと思います。 宜しくお願い致します!

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?