【问题标题】:Rails: how do you tell cron to execute a controller method?Rails:你如何告诉 cron 执行控制器方法?
【发布时间】:2018-06-14 04:01:07
【问题描述】:

文章控制器中有一堆邮件方法,它们将不同类型的文章与不同的用户混合在一起。从 Rails 中的某个地方调用时,一切正常。但它们需要在一周内由 cron 执行。 rake 文件中的“xxxx”用什么代替来告诉它在 Article 控制器中执行“10_am_action”方法?

articles_controller.rb:

def 10_am_action
  [sends the right e-mails to the right users]
end

Cron:

0 10 * * 0  cd /data/website/current && RAILS_ENV=production bundle exec rake emails:10_am

emails.rake:

namespace :briefings do

desc "10 am e-mails"
task :10_am => :environment do
    xxxxxx
end

end

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller cron rake


    【解决方案1】:

    你不能,因为控制器绑定到 HTTP。

    但是,您可以重构代码并将电子邮件发送逻辑提取到邮件程序,然后从您的控制器和您的 rake 任务中调用该邮件程序。

    【讨论】:

    • 好的,谢谢。我现在就把它放在 rake 任务文件中。但是为了保持整洁,你应该把可以由控制器或 rake 任务执行的代码放在哪里?
    • 您可以添加一个“服务”对象,另见六角架构:confreaks.com/videos/977-goruco2012-hexagonal-rails
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2012-08-14
    相关资源
    最近更新 更多