Ruby on rails 延迟的_作业:任何调用上的未定义方法错误
我有一个rails 3.0.5应用程序,它与延迟工作2.1.4配合得很好 我已经有好几个星期没有接触这个应用了,但我只是去调整它,发现延迟的工作被破坏了。具体地说,对延迟的_作业的任何调用都会在延迟后返回方法上的“undefined method”错误。(例如StudentMailer.delay.student_-mail('test')在“student_-mail”上返回“undefined method”),我不明白为什么。有几件事:Ruby on rails 延迟的_作业:任何调用上的未定义方法错误,ruby-on-rails,actionmailer,delayed-job,Ruby On Rails,Actionmailer,Delayed Job,我有一个rails 3.0.5应用程序,它与延迟工作2.1.4配合得很好 我已经有好几个星期没有接触这个应用了,但我只是去调整它,发现延迟的工作被破坏了。具体地说,对延迟的_作业的任何调用都会在延迟后返回方法上的“undefined method”错误。(例如StudentMailer.delay.student_-mail('test')在“student_-mail”上返回“undefined method”),我不明白为什么。有几件事: 将StudentMailer.delay.stud
- 将StudentMailer.delay.student_-mail('test')替换为StudentMailer.student_-mail('test')。deliver可以很好地传递邮件
- 没有在网站上更改任何gem版本,它们自开发以来一直处于锁定状态
- RVM已卸载并重新安装
- 发生在所有mailer方法中
class StudentMailer < ActionMailer::Base
def course_signup(email, password, course, enrolment)
@email = email
@password = password
@course = course
@enrolment = enrolment
@student = Student.where(:email => email).first
if (@student.user.first_name && @enrolment.student.user.last_name) then
@username = @student.first_name.gsub(/[^[:alnum:]]/, '').downcase + '.' + @student.last_name.gsub(/[^[:alnum:]]/, '').downcase
else
@username = "fcuser#{@student.id}"
end
mail(:to => email, :from => ENV['ACCOUNTS_EMAIL'], :subject => "You have been enrolled as a student for #{course}", :content_type => 'text/plain')
end
end
CONFIG/BOOT.RB
require 'yaml'
YAML::ENGINE.yamler = 'syck'
require 'rubygems'
gemfile = File.expand_path('../../Gemfile', __FILE__)
begin
ENV['BUNDLE_GEMFILE'] = gemfile
require 'bundler'
Bundler.setup
rescue Bundler::GemNotFound => e
STDERR.puts e.message
STDERR.puts "Try running `bundle install`."
exit!
end if File.exist?(gemfile)
延迟作业错误:
{未定义的方法<代码>课程注册'#
/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/performable_mailer.rb:6:in
perform'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/backend/base.rb:87:in
invoke_job'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/worker.rb:120:in
中的块(2层)
运行'\n/Users/john/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/timeout.rb:58:in
timeout'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:120:in
block in
运行'\n/Users/john/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in
realtime'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:119:in
run'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:177:in
reserve_和_run_one_job'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/worker.rb:104:in
block in
work_off'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/worker.rb:103:in
times'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:103:in
work\u off'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:78:in
中的块(2级)
启动'\n/Users/john/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in
realtime'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:77:in
block-in
启动'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/worker.rb:74:in
loop'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/worker.rb:74:in
start'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/command.rb:104:in
run'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/command.rb:83:in
block-in
运行进程“\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/application.rb:249:in
call'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/application.rb:249:in
block-in
启动\u proc'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/daemonize.rb:197:in
call'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/daemonize.rb:197:in
call_as_daemon'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/application.rb:253:in
start\u proc'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/application.rb:293:in
start'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/controller.rb:70:in
run'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons.rb:195:in
block-in
运行\u proc'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/cmdline.rb:109:in
call'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons/cmdline.rb:109:in
catch_exceptions'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/daemons-1.1.4/lib/daemons.rb:194:in
run_proc'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/command.rb:81:in
run_process'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-2.1.4/lib/delayed/command.rb:75:in
block in
daemonize'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/command.rb:73:in
times'\n/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/delayed\u job-2.1.4/lib/delayed/command.rb:73:in
daemonize'\nscript/delayed_作业:5:in`| 2011-09-06 07:42:21|
空| 2011-09-06 07:43:00 |空| 2011-09-06 07:40:07|
2011-09-06 07:43:00|
尝试更改方法定义
def self.course_signup
或
因为现在您从类中调用方法,但方法属于对象,所以我遇到了相同的问题。如果您使用的是thin,请尝试执行“bundle exec thin start”。它对我有效。我在谷歌上搜索了相同的问题,并找到了解决方法(它对我有效) 将这两行添加到config/application.rb的头部 需要“yaml” YAML::ENGINE.yamler='syck' 然后,重新启动服务器(webrick/thin/whatever)并延迟作业 (bundle exec./script/delayed_作业重启)
完成。我在部署到Heroku的应用程序中遇到了相同的错误。知道如何修复它吗?还有,你把
bundle exec thin start
放在哪里了?就在终端中?同样的问题。我正试图通过控制台(不使用thin)通过延迟作业发送一封电子邮件进行测试。我也是。没人知道?
def self.course_signup
studentmailer = StudentMailer.new