如何在Rails服务器启动后运行我的ruby代码?

时间:2011-12-17 09:45:02

标签: ruby-on-rails ruby ruby-on-rails-3

我试过了:

after_initialize do
  #code
end

但是:(文件)

  

您的应用程序的某些部分,特别是观察者和路由,不是   但是在调用after_initialize块时设置。

我需要在我的代码中使用路由和记录器

有什么想法吗?

5 个答案:

答案 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

另外http://guides.rubyonrails.org/initialization.html

答案 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中的代码仅在服务器启动时才运行一次。

相关问题