Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟的_作业:任何调用上的未定义方法错误_Ruby On Rails_Actionmailer_Delayed Job - Fatal编程技术网

Ruby on rails 延迟的_作业:任何调用上的未定义方法错误

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

我有一个rails 3.0.5应用程序,它与延迟工作2.1.4配合得很好

我已经有好几个星期没有接触这个应用了,但我只是去调整它,发现延迟的工作被破坏了。具体地说,对延迟的_作业的任何调用都会在延迟后返回方法上的“undefined method”错误。(例如StudentMailer.delay.student_-mail('test')在“student_-mail”上返回“undefined method”),我不明白为什么。有几件事:

  • 将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