1

在我拥有的 rails 项目的控制器中,有一个帮助函数,它发送一封电子邮件,其中包含过去一周对数据库所做的所有更改。我在 Unix 上还有一个 cron 作业,每个周末都会运行许多与我的 Web 应用程序相关的 bash 脚本。是否有一种简单的方法可以从独立的 .rb 文件或 bash 脚本运行控制器的辅助函数?

4

1 回答 1

2

如果您真的想从您的 crontab 中发出 Web 请求,您可以调用wgetcurl在目标 URL 上。

0 * * * * wget http://yourdomain.com/path/to/request -o /dev/null

如果您想在 Web 请求的上下文之外执行此邮件程序,那么这种行为不应该出现在您的控制器中。这是lib/为了什么。

您可以创建一个文件,例如lib/my_helpers.rb包含

module MyHelpers
  extend self

  def your_mailer(some, params, here)
    # runthe mailer
  end
end

您可以将其包含在您想要的任何控制器中,甚至ApplicationController

include ::MyHelpers

无论它包含在哪里,您都可以简单地调用your_mailer(param1, param2, param3)来执行它。

然后,您将在 rake 任务中包含此内容,并从您的 crontab 中执行 rake 任务。lib/tasks/your_mailer.rake用这样的东西创建一个文件

include MyHelpers

namespace :myapp do
  desc "Runs your_mailer"
    task :mailer => :environment do
    your_mailer(param1, param2, param3)
  end
end
于 2012-12-17T23:54:51.867 回答