在我有一个rails项目的控制器中,有一个辅助函数可以发送一封电子邮件,其中包含上周完成的对数据库所做的所有更改。我在Unix上也有一个cron作业,每个周末都会运行一些与我的web应用程序相关的bash脚本。有没有一种简单的方法来从独立的.rb文件或bash脚本运行控制器的辅助函数?从shell运行Rails控制器方法?
回答
如果您确实想要在您的crontab中发出Web请求,您可以在目标URL上调用wget
或curl
。
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任务。像这样的东西
include MyHelpers
namespace :myapp do
desc "Runs your_mailer"
task :mailer => :environment do
your_mailer(param1, param2, param3)
end
end
当我尝试运行这个时,我得到一个'未初始化的常量MailerHelper'。尽管如此,这是非常有帮助的! –
确保'config/application.rb'具有'config.autoload_paths + = Dir [“#{config.root}/lib”]' – deefour
仍然出现问题。 在/lib/mailer_helper.rb '模块MailerHelper 延伸自 DEF summaryemail @date = DateTime.now.beginning_of_week.strftime( '%M /%d /%Y') SummaryMailer.weekly_email(@date ).deliver 结束 end' 在/lib/tasks/mailer_helper.rake '包括MailerHelper 命名空间:状态做 desc “的运行梅勒” 任务:邮件=>:环境做 summaryemail 结束 结束' –
- 1. 从JavaScript运行控制器方法
- 2. 从Rails控制器运行Ruby脚本
- 3. 如何从控制台运行控制器关注方法?
- 4. Rails控制器方法执行
- 5. 是否有可能使用runner运行Rails控制器方法?
- 6. 运行控制器方法每5秒
- 7. 从控制台运行路由方法
- 8. 我可以从命令行运行sailsjs控制器方法吗?
- 9. 无法运行控制器
- 10. 未定义方法rails - 从视图调用控制器方法
- 11. 从rails控制台运行迁移
- 12. 从控制器运行种子的方法
- 13. Laravel 5从Artisan命令运行控制器方法
- 14. 如何在控制器完成运行后从appdelegate运行一个方法?
- 15. Rails - 重构控制器方法到应用程序控制器
- 16. jQuery GET Rails控制器方法
- 17. 调用与JavaScript Rails控制器方法
- 18. Rails 3 - NoMethodError方法'新'在控制器
- 19. 在Rails控制器中对项目进行排序控制器方法
- 20. 从Rails 3控制器调用帮助器方法
- 21. 在Rails调用方法 - 从控制器或从视图
- 22. Rails的:基于运行私人控制方法变量
- 23. 无法从Rails控制器渲染JavaScript
- 24. 从控制器的Symfony3控制台运行控制台命令
- 25. 如何从rails控制器异步运行ruby脚本?
- 26. Rails:从代码运行控制器动作
- 27. Rails - 从控制器运行rake任务或新线程?
- 28. Jquery&Rails 3:从js文件运行控制器操作?
- 29. Rails从另一个控制器运行代码
- 30. Laravel - 在一个控制器中运行另一个控制器的方法
我的第一本能会辅助功能移动到自己的类,也许在'lib'创建
lib/tasks/your_mailer.rake
文件。 –