我试过了:
after_initialize do
#code
end
但是:(文件)
您的应用程序的某些部分,特别是观察者和路由,不是 但是在调用after_initialize块时设置。
我需要在我的代码中使用路由和记录器
有什么想法吗?
答案 0 :(得分:27)
参见http://guides.rubyonrails.org/configuring.html
中的3.1节我相信你会把这段代码放在config / application.rb
中config.after_initialize do
# ....
end
# config.after_initialize takes a block which will be run after Rails has finished initializing the application.
# That includes the initialization of the framework itself
答案 1 :(得分:12)
@house9's answer是正确的,正如评论所指出的,这也将在运行rake任务,控制台等时执行。我使用以下内容来识别服务器实际执行的时间:
# application.rb
if defined?(Rails::Server)
config.after_initialize do
# Do stuff here
end
end
答案 2 :(得分:4)
另一种选择是创建自定义初始化程序。它只是一个存在于config / initializers /下的ruby文件,并且正好执行“on_server_start”事件:)
答案 3 :(得分:1)
添加到config.ru
的行将由Rails服务器运行,而不由加载环境的Rails控制台或Rake任务运行。
# config.ru
# This file is used by Rack-based servers to start the application.
require ::File.expand_path("../config/environment", __FILE__)
# your code here (after environment is loaded)
run Rails.application
答案 4 :(得分:0)
由于Rails 5的默认服务器是Puma,因此config/puma.rb
中的代码仅在服务器启动时才运行一次。