1

我试图了解如何/何时在 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 class Application < Rails::Application

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

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

4

0 回答 0