仅在Rails应用程序实际运行时运行的代码,而不是在rake任务,生成器等期间运行的代码

时间:2013-09-26 18:09:57

标签: ruby-on-rails heroku

我们正在尝试建立一个gem-ready初始化代码块,它只在运行的Rails应用程序的上下文中运行,但它证明了令人费解的难度。

我们希望它在以下时间运行:

  • 通过rails server
  • 从命令行在本地启动应用
  • 在Heroku或其他部署环境中启动应用程序
  • 测试期间

但不是在:

  • 正在运行Rake任务
  • 正在运行发电机
  • 在部署到Heroku的过程中运行的是什么

最后一个例子,特别是让我们绊倒。每当我们通过git push heroku master推送到Heroku时,我们的应用程序会在一些奇怪的环境中执行,它正在生产中但没有Heroku配置变量可用于初始化程序..无法在任何地方找到任何信息..

我们已经看到了这个asked elsewhere,但是传递ENV变量不是一个选项,因为它将在一个宝石中。

1 个答案:

答案 0 :(得分:1)

我不知道您如何检测到您处于Heroku资产预补偿阶段并避免运行某些代码,但是您可以通过使用'用户在预编译期间获得Heroku环境变量来自Heroku Labs的-env-compile'功能。

https://devcenter.heroku.com/articles/labs-user-env-compile

 heroku labs:enable user-env-compile -a myapp