2

私は時計仕掛けの宝石を使って毎日メールを送っています。libフォルダー内にclock.rbファイルを作成しました。

  #clock.rb
  require 'rubygems'
  require 'clockwork'
  include Clockwork

  every(1.day, 'reminders.send', :at => '09:30'){
   @leave_details = LeaveDetail.all(:conditions => {:status => [LeaveDetail::STATUS_PENDING, LeaveDetail::STATUS_PENDING_MNGT]})
   @leave_details.each do |ld|
   UserMailer.leave_reminder_email(ld).deliver
 end
}  

Procfileを作成しました:-

web:    bundle exec thin start -d
clock:  bundle exec clockwork lib/clock.rb

私が命令するとき

foreman start

エラーが表示されています:-

17:20:51 web.1   | started with pid 21144
17:20:51 clock.1 | started with pid 21146
17:20:52 clock.1 | I, [2012-12-06T17:20:52.558231 #21150]  INFO -- : Starting clock for 1 events: [ reminder.deliver ]
17:20:52 clock.1 | I, [2012-12-06T17:20:52.558324 #21150]  INFO -- : Triggering 'reminder.deliver'
17:20:52 clock.1 | E, [2012-12-06T17:20:52.558399 #21150] ERROR -- : uninitialized constant LeaveDetail (NameError)
17:20:52 clock.1 | /home/akhileshwar/Desktop/14-11-2012/RoR/P10HR/lib/clock.rb:8:in `block in <top (required)>'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:93:in `call'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:93:in `run'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:172:in `block in tick'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:170:in `each'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:170:in `tick'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:156:in `block in run'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:155:in `loop'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/lib/clockwork.rb:155:in `run'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/gems/clockwork-0.4.1/bin/clockwork:19:in `<top (required)>'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/bin/clockwork:23:in `load'
17:20:52 clock.1 | /home/akhileshwar/.rvm/gems/ruby-1.9.3-p194@rails326/bin/clockwork:23:in `<main>'
17:20:52 web.1   | >> Deleting stale PID file tmp/pids/thin.pid
17:20:52 web.1   | exited with code 0
17:20:52 system  | sending SIGTERM to all processes
SIGTERM received
17:20:52 clock.1 | terminated by SIGTERM

LeaveDetailは、モデル内のルビークラスです。「LeaveDetail」が初期化されていない状態でここに表示される理由を教えてください。thnks

4

2 に答える 2

0

include Clockworkモジュールとして使用したり、追加require './config/boot' したり、require './config/environment'

require './config/boot'
require './config/environment'
require 'clockwork'

module Clockwork
every(1.day, 'reminders.send', :at => '09:30'){
   @leave_details = LeaveDetail.all(:conditions => {:status => [LeaveDetail::STATUS_PENDING, LeaveDetail::STATUS_PENDING_MNGT]})
   @leave_details.each do |ld|
   UserMailer.leave_reminder_email(ld).deliver
 end
}
end
于 2013-04-21T06:31:49.180 に答える
0

実際には時計仕掛けでアプリをロードしていません。Clockwork は独立したスタンドアロンの Ruby プロセスです。アプリの残りの部分について通知しない場合、アプリはその存在を認識していないため、エラーは論理的です。これは、sidekiq の時計仕掛けのサンプル ドキュメントからのものです。

# require boot & environment for a Rails app
require_relative "../config/boot"
require_relative "../config/environment"
于 2013-03-12T21:50:41.867 に答える