質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

435閲覧

herokuで$whenever --update-crontabがNo such file or directory - crontabになる

joru

総合スコア45

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/05/29 01:39

前提・実現したいこと

herokuにデプロイしているrailsアプリ上において、wheneverでrakeタスクを定時実行をしたいと思うのですが、schedule.rbで設定したrakeタスクが実行されていない。

原因を調べようとしたところ

$ heroku run whenever Running whenever on ⬢ サービス名... up, run.8952 (Free) 0 3 * * * /bin/bash -l -c 'cd /app && RAILS_ENV=production bundle exec rake check_expired_coupons:check_coupons --silent' 0 3 * * * /bin/bash -l -c 'cd /app && RAILS_ENV=production bundle exec rake check_expired_coupons:check_expired_coupons --silent' ## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated. ## [message] Run `whenever --help' for more options.

とあったので、

whenever --update-crontab

が必要だと思ったのですが、エラーが出て実行できません。

発生している問題・エラーメッセージ

$ heroku run whenever --update-crontab Running whenever --update-crontab on ⬢ サービス名... up, run.4726 (Free) Traceback (most recent call last): 6: from /app/vendor/bundle/bin/whenever:29:in `<main>' 5: from /app/vendor/bundle/bin/whenever:29:in `load' 4: from /app/vendor/bundle/ruby/2.6.0/gems/whenever-0.11.0/bin/whenever:44:in `<top (required)>' 3: from /app/vendor/bundle/ruby/2.6.0/gems/whenever-0.11.0/lib/whenever/command_line.rb:6:in `execute' 2: from /app/vendor/bundle/ruby/2.6.0/gems/whenever-0.11.0/lib/whenever/command_line.rb:38:in `run' 1: from /app/vendor/bundle/ruby/2.6.0/gems/whenever-0.11.0/lib/whenever/command_line.rb:77:in `write_crontab' /app/vendor/bundle/ruby/2.6.0/gems/whenever-0.11.0/lib/whenever/command_line.rb:77:in `popen': No such file or directory - crontab (Errno::ENOENT)

該当のソースコード

ruby

1#schedule.rb 2 3every 1.day, :at => '3:00 am' do 4 rake "check_expired_coupons:check_coupons" 5 rake "check_expired_coupons:check_expired_coupons" 6end

ruby

1#application.rb 2 3module サービス名 4 class Application < Rails::Application 5 6 # taskパスのオートロード 7 config.autoload_paths += Dir["#{config.root}/lib/**/"] 8 config.eager_load_paths += Dir["#{config.root}/lib/**/"] 9 end 10end

試したこと

● (Errno::ENOENT)だったので、

$ heroku run bash Running bash on ⬢ サービス名... up, run.1794 (Free) ~ $ cd tmp ~/tmp $ cd cache ~/tmp/cache $ rm bootsnap-load-path-cache ~/tmp/cache $ rm -rf bootsnap-compile-cache

してみたのですが、効果なく

● rake "check_expired_coupons:check_coupons"
これ自体は実行できます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Herokuではcrontabが使えません。Heroku Schedulerを使うか、ローカルのcrontabからHeroku上のタスクを叩くか、いずれかがよいでのはないかと思います。

投稿2019/05/29 04:10

iwamot

総合スコア1154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問