いつでもgemを使用してユーザーに誕生日のリマインダーを送信するcronジョブを作成しようとしていますが、このcronを毎日実行したいと考えています。
いつでもgemが機能していますが、cronジョブでエラーが発生し続けます。Railsコンソールでコントローラーメソッドを呼び出して把握しようとしていますが、エラーが発生し続け、理由がわかりません。
私はこのコントローラーを持っています:
class BirthdayRemindersController < ApplicationController
include ApplicationHelper
# cron job that sends birthday reminders
def send_birthday_email_reminders
users = User.all
email_addresses = []
users.each_with_index do |user, i|
if user.user_details.birthday_reminders == true
email_addresses[i] = get_primary_email(user)
end
end
p email_addresses
users.each do |user|
if user.user_details.birthday == Date.today
p "reminder sent"
send_birthday_reminders(user, email_addresses)
end
end
end
end
そして、レールコンソールで私はこれらの両方を試しましたが、両方ともエラーになります。
Toms-Mac-mini:famnfo TomCaflisch$ rails c
Loading development environment (Rails 3.2.9)
irb(main):001:0> BirthdayRemindersController.send_birthday_email_reminders
NoMethodError: undefined method `send_birthday_email_reminders' for BirthdayRemindersController:Class
from (irb):1
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
irb(main):002:0> BirthdayReminders.send_birthday_email_reminders
NameError: uninitialized constant BirthdayReminders
from (irb):2
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /Users/TomCaflisch/.rvm/gems/ruby-1.9.3-p327@famnfo/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
irb(main):003:0>
私は何が欠けていますか?このコントローラーにルートを定義していません。これは、Webブローを介して誰もコントローラーをヒットできないようにするためです。