我想啓動一個線程,每隔幾秒醒來就在Ruby-on-Rails Web應用程序中進行一些處理。在.NET中,邏輯的地方應該是在global.asax文件中創建一個線程並在Application_Start
中啓動它。Ruby的等價ASP.NET的Application_Start?
在RoR中做這樣的事情有沒有類似的範例?這會在ApplicationController
中完成嗎?
另外:我輸入了錯誤的搜索字符串還是搜索引擎真的很難找到用於構建RoR應用程序的信息?
我想啓動一個線程,每隔幾秒醒來就在Ruby-on-Rails Web應用程序中進行一些處理。在.NET中,邏輯的地方應該是在global.asax文件中創建一個線程並在Application_Start
中啓動它。Ruby的等價ASP.NET的Application_Start?
在RoR中做這樣的事情有沒有類似的範例?這會在ApplicationController
中完成嗎?
另外:我輸入了錯誤的搜索字符串還是搜索引擎真的很難找到用於構建RoR應用程序的信息?
Rails沒有真正的等價物。該Whenever RubyGem是克龍的一個很好的抽象,讓您使用的語法像下面的例子中從Rails應用程序裏:
every 30.seconds do
# Do something interesting...
end
有些資源可能對您有用:
搜索引擎不僅是壞的,但幾乎只有你會找到RoR的信息。 :(
我認爲你所尋找的範例是一個cron工作,儘管這假定你在Linux下運行,但我最常見的是本質上是一個「計劃任務」,每隔一頁您可以通過將您的計劃任務指向遠程框的cron「命中點」來遠程執行此操作。
您可以可以將代碼放在ApplicationController中並讓它檢查以查看最近X年的工作是否已完成,但問題在於,您可能因爲要求比預期的時間間隔更長而不能工作。
好 運氣!
這個問題沒有一個答案,因爲它很大程度上取決於您的具體要求。但是,當然,這與ASP.NET中描述的概念沒有直接的關係。但是,您需要查看Background Processing on Rails作爲一個很好的起點。
幾年前,我試過daemon_generator,但由於某種原因現在忘記了我從未結束使用它。
我曾考慮過使用cron作業,但如果可能的話,我想保留webapp中的所有內容。 – jerhinesmith 2009-06-16 14:00:26