我试图了解如何/何时在 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 仪表板中可见)并且变量确实存在。为什么是双通道,有没有办法区分代码中的那些不同实例?