ruby-on-rails - Ruby/Rails - 运行部署后任务的更好方法?

标签 ruby-on-rails ruby deployment rake

我们使用 EngineYard App Cloud 托管我们的 Ruby on Rails 应用程序,这对我们来说非常有效。它们提供了一系列类似于 Capistrano 回调的部署回调(before_restart、after_restart 等)。

我们的应用程序中有一系列 Rake 任务,用于维护应用程序的各个部分。如果我们向数据库中添加新的业务规则,我们可能需要重新加载用户关联的业务规则等。

这些任务没有硬性或快速的时间表,但我们也不希望在每次部署时都运行每一项任务,因为它们会减慢部署过程。

是否有任何系统允许我们定义要在下一次部署时运行的任务,有点像迁移。我心目中的理想系统将按如下方式工作:

  • 我们意识到在下一次部署时,需要运行一个任务
  • 我们通过系统安排任务
  • 在下一次部署时,系统会看到部署后任务列表——它注意到最近的任务尚未在特定服务器上运行(就像迁移在运行时如何标记数据库一样只有最近的、未运行的迁移被触发)——新任务被触发

关于安排这些部署后任务并启动它们(除非它们已经在服务器上运行)的最佳做法有什么建议吗?

谢谢!

最佳答案

试试 after_party ruby gem 以 db:migrate 的基本操作为模型,但用于部署后任务。部署后(rake)任务是用这样的名称创建的

lib/tasks/deployment/20130130215258_task_name.rake

您当然可以从 rake 任务中调用任何 ruby​​ 代码。文档说它支持同步和异步任务(异步任务是长时间运行的任务,您可以在应用程序启动时在后台进行这些任务)

我没有使用过它,但我打算试一试,因为我们的要求与您描述的类似。

关于ruby-on-rails - Ruby/Rails - 运行部署后任务的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3668092/

相关文章:

java - 制作了我在 java 中使用 JFrame 制作的应用程序的 .jar 文件。效果 100%。但是当我从网站加载它时,它只是一个空白的白屏

ruby-on-rails - 解释 Rake 查询创建 csv

ruby-on-rails - rails : autoload files inside engine's lib directory

ruby-on-rails - rails : how to add a header to every page

ruby-on-rails - Rails 夹具关系不存在

ruby - 有哪些 "Pastie"替代方案? (可安装)

java - 将 war 文件从 Jenkins 部署到弹性 beanstalk 时部署失败

vba - Outlook 2010 VBA 脚本部署

ruby - 如何使用 minitest stub 多次调用同一函数以获得不同的返回

ruby - 如何运行一系列检查?