Whenever: Bagaimana cara menguji di lingkungan pengembangan?

Dibuat pada 10 Jun 2013  ·  5Komentar  ·  Sumber: javan/whenever

Saya memiliki cron di aplikasi saya dan saya mencoba mengujinya, tetapi tidak berjalan. Konfigurasi saya:

# Gemfile
gem 'whenever', require: false

Jadwal saya

# config/schedule.rb
set :output, { error: 'error.log', standard: 'cron.log' }

every 2.minutes do
  runner "Cron.get_categories"
end

Dan kroni saya

# lib/cron.rb
class Cron
  def self.get_categories
    p "Testing..."
  end
end

Dan teks tidak tercetak di konsol saya. Apakah ada konfigurasi lain yang harus dilakukan?

Terima kasih sebelumnya!

Komentar yang paling membantu

Untuk memperbarui crontab lokal Anda dalam mode pengembangan, Anda harus menjalankan perintah whenever secara manual, alih-alih mengandalkan tugas Capistrano yang disertakan untuk melakukannya untuk Anda. whenever --update-crontab --set environment=development harus melakukan trik.

Dari sana, Anda dapat menjalankan crontab -l untuk memastikan bahwa file crontab Anda telah ditulis. Pekerjaan Anda seharusnya berjalan setiap 2 menit sekarang. Catatan, Anda tidak akan pernah melihat teks apa pun di konsol Anda; pelari terjadi dalam proses baru

Semua 5 komentar

Untuk memperbarui crontab lokal Anda dalam mode pengembangan, Anda harus menjalankan perintah whenever secara manual, alih-alih mengandalkan tugas Capistrano yang disertakan untuk melakukannya untuk Anda. whenever --update-crontab --set environment=development harus melakukan trik.

Dari sana, Anda dapat menjalankan crontab -l untuk memastikan bahwa file crontab Anda telah ditulis. Pekerjaan Anda seharusnya berjalan setiap 2 menit sekarang. Catatan, Anda tidak akan pernah melihat teks apa pun di konsol Anda; pelari terjadi dalam proses baru

Terima kasih @javan! Namun, ini tidak berhasil untuk saya. saya berlari:

$ whenever --update-crontab --set environment=development
# => [write] crontab file updated

$ crontab -l
# => # Begin Whenever generated tasks for: config/schedule.rb
# => 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /Users/app && script/rails runner -e production '\''Cron.get_categories'\'' >> log/cron.log 2>> log/error.log'

# => # End Whenever generated tasks for: config/schedule.rb

# => # Begin Whenever generated tasks for: /Users/app/config/schedule.rb
# => * * * * * /bin/bash -l -c 'cd /Users/app && script/rails runner -e development '\''Cron.get_categories'\'' >> log/cron.log 2>> log/error.log'

# => # End Whenever generated tasks for: /Users/app/config/schedule.rb

Dan tidak ada yang terjadi. :confused: Saya menggunakan Mac OSX (versi 10.8.3), Rails 3.2.13 dan Ruby 2.0.0.

Jawaban Anda membuat saya ragu... Ini berarti bahwa untuk menggunakan whenever di lingkungan produksi, saya perlu memasang permata capistrano , bukan?

Pertanyaan lain... Jika saya membuat cron baru atau hanya memperbarui waktu setiap cron akan dijalankan, saya perlu menjalankan perintah ini lagi?

Terima kasih banyak @javan!

Periksa file log/cron.log Anda, saya menduga itu ditulis setiap 2 menit.

Jika Anda menggunakan Capistrano untuk menyebarkan aplikasi Anda, Kapanpun memiliki tugas bawaan untuk menulis crontab Anda. Mereka tidak diperlukan, itu selalu dapat digunakan sebagai alat baris perintah.

Ini adalah kesalahannya:

# log/error.log
/Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:45:in `gem_original_require': no such file to load -- bundler/setup (LoadError)
    from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/app/config/boot.rb:6
    from script/rails:5:in `require'
    from script/rails:5

Dan ini di boot.rb

# config/boot.rb at line 6
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

@fabianoalmeida di crontab lokal Anda, bukan

* * * * * /bin/bash -l -c 'cd /Users/app && script/rails runner -e development '\''Cron.get_categories'\'' >> log/cron.log 2>> log/error.log'

jalankan perintah dengan bundle exec :

* * * * * /bin/bash -l -c 'cd /Users/app && /your-full-path-to/bundle exec script/rails runner -e development '\''Cron.get_categories'\'' >> log/cron.log 2>> log/error.log'

... untuk mengetahui path lengkap Anda ke bundel, jalankan saja perintah unix which seperti berikut:

$ which bundle
/home/lsoave/.rbenv/shims/bundle

Apakah halaman ini membantu?
0 / 5 - 0 peringkat