在Heroku部署之后做一些事情

在将Rails应用程序部署到Heroku之后是否可以使用钩子或事件来立即触发某些内容?

具体来说,我们想在tmp /下构建一个特定的目录结构(结构取决于配置值,因此无法检入源代码)。

Heroku支持一些部署后的钩子 – 请参阅https://devcenter.heroku.com/articles/deploy-hooks 。 您可以使用HTTP挂钩触发应用程序上的操作,从而创建所需的结构。 有关如何使用此HTTP部署挂钩的示例,请查看http://dzello.com/blog/2012/03/11/spin-up-your-heroku-dyno-automatically-after-deploy/

请记住,如果你在tmp目录中构建任何东西,它会在dyno重启后消失。

事实certificate我的问题的两个部分是不兼容的 – @eugen解释了如何实现后部署钩子,但也提醒我,每当dyno重新启动时,我创建的任何tmp目录都会被炸毁…

那么解决方案是什么? 以下是我提出的:

配置/初始化/的setup.rb

 # Ensure temp file system is set up: begin Dir.mkdir("tmp/customdir") unless File.exists?("tmp/customdir") rescue StandardError => e # Allow this to fail on initial deploy # (It will raise error: "No such file or directory - tmp/customdir" because the tmp dir won't yet exist) end 

说明: Heroku在部署期间基本上进行了两次初始化。 第一遍,当它预编译资产时,通常会阻塞上面的代码,因为tmp目录将不存在。 如果我们允许它失败,它将在第二次传递和后续重启时工作。

是的,这是一个黑客。 我之前已经尝试过如何区分预编译初始化和普通初始化,但似乎没有办法,所以这就是我们留下的东西。

如果任何人都可以改进,那就很乐意听到它。