ruby-on-rails - 每当插件帮助

标签 ruby-on-rails ruby-on-rails-plugins whenever

我正在尝试使用 Rails 的“Whenever”插件在特定时间执行模型过程。我的schedule.rb如下:

 every 1.day, :at => '5:30 am' do
    runner "User.mail_out"
  end

我的模型如下:

class User < ActiveRecord::Base

  acts_as_authentic

  def mail_out

    weekday = Date.today.strftime('%A').downcase

    @users = find(:conditions => "#{weekday}sub = t")

    @users.each { |u| UserMailer.deliver_mail_out(u)}   


  end

end

当我尝试运行 script/runner -edevelopment "User.mail_out"命令时,出现以下错误:

/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: undefined method `mail_out' for #<Class:0xb708bd50> (NoMethodError)
    from (eval):1
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `eval'
    from /var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/runner:3

谁能指出出了什么问题吗?另外,我如何手动调用 mail_out 进程(从命令行)来测试我的邮件系统的功能。

谢谢!

最佳答案

您收到该错误是因为您将 mail_out 方法定义为实例方法而不是方法。要修复此问题,请将方法定义行更改为 (add self.):

def self.mail_out

要从命令行测试它,请执行以下操作:

script/runner "User.mail_out"

您可能想要放置打印某些内容,以便获得有关所发生情况的一些反馈。

关于ruby-on-rails - 每当插件帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179428/

相关文章:

mysql 巨大的操作

ruby-on-rails - rails : Model attributes from XML

javascript - 更改 Ruby 哈希值

ruby-on-rails - 如何在表单collection_select rails中将多个id作为数组传递?

ruby-on-rails - 要求 'rubygems'不起作用

ruby-on-rails - 使用集合向 Formtastic 单选按钮添加背景图像或图像标签

ruby-on-rails - 如何在表单声明 block 之外添加额外的表单字段

ruby-on-rails - 每当 gem schedule.rb 文件 : doesn't recognize RAILS_ROOT variable

ruby-on-rails - 在使用 When 和 Capistrano 时,在任何来源中都找不到 rake 10.0.3

ruby-on-rails - 每当 docker 容器中 Rails 应用程序中的 cronjob 不工作时