在我有一個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
文件。 –