了解Heroku上的Rails应用程序初始化

我试图了解如何/何时在Heroku中初始化Rails应用程序…

例1

例如,假设我在应用程序的最开头添加了以下日志操作:

在config / application.rb中:

module Tester class Application < Rails::Application test_logger = Logger.new(STDOUT) test_logger.info('STARTING APP - VERSION 1') 

如果我然后在本地运行我的应用程序,我会马上看到该日志消息:

 $ rails server INFO -- : STARTING APP - VERSION 1 

大。 现在让我们推向Heroku:

 git push heroku master 

该应用程序部署并启动。 但是看看Papertrail日志,没有消息。

好的,我尝试重新启动应用程序:

 heroku restart 

现在日志消息确实显示出来了。

接下来,我增加版本号并再次推送到Heroku。 这一次,我看到了日志消息,但显示的是“VERSION 1”而不是“VERSION 2”。 这种情况一直发生在后续推送中 – 它将始终显示一个落后的版本的日志消息。 如果我重新启动应用程序,则日志消息版本是最新的。 有谁知道为什么会这样?

例2

我通过Heroku CLI设置了一个ENV值:heroku config:set TEST_VAR = something

并将代码放在我的application.rb文件中以读取它:module Tester类Application <Rails :: Application

 config.before_configuration do test_logger.info(ENV['TEST_VALUE']) end 

当我部署到Heroku时,呼叫被击中两次。 第一次,它被记录到我的终端屏幕,并且ENV变量不存在。 第二次,它被记录到Heroku的系统(在我的Papertrail仪表板中可见),变量确实存在。 为什么双通,有没有办法区分代码中的那些不同实例?