【发布时间】:2013-10-02 20:31:06
【问题描述】:
我们正在尝试建立一个可以在运行的 Rails 应用程序上下文中专门运行的 gem-ready 初始化代码块,但事实证明这非常困难。
我们希望它在以下情况下运行:
- 应用程序通过
rails server从命令行本地启动 - 应用在 Heroku 或其他部署环境中启动
- 测试期间
但不适用于:
- 正在运行 Rake 任务
- 正在运行生成器
- 在部署到 Heroku 的过程中运行的任何内容
最后一个例子,尤其是让我们绊倒。每当我们通过git push heroku master 推送到 Heroku 时,我们的应用程序都会在一些奇怪的上下文中执行,它正在生产中,但初始化程序没有可用的 Heroku 配置变量..在任何地方都找不到任何信息..
我们已经看到了这个asked elsewhere,但是传递 ENV 变量不是一种选择,因为它会在 gem 中。
【问题讨论】:
-
我对此知之甚少,无法提供完整答案,但听起来您可以使用延迟加载挂钩:simonecarletti.com/blog/2011/04/…。此外,部署到 Heroku 时的“奇怪上下文”听起来可能是资产编译步骤——“环境变量在编译时对您的应用程序不可用”:devcenter.heroku.com/articles/rails-asset-pipeline。
-
@matt- 感谢您提供两个非常有用的链接。资产管道文章确实为我们在那里处理的内容提供了很多启示。至于延迟加载挂钩 - 听起来很有希望,我现在正在研究它们并将报告回来..
标签: ruby-on-rails heroku