Rails:如何在服务器启动时 运行 编码,而不是在 运行 rake 任务或控制台时编码?
Rails: How to run code when server starts up, but not when running a rake task or the console?
之前,我将代码添加到名为 config/initializers/remote_publishers.rb
的文件中,该文件在服务器启动时使用 Bunny gem 建立到 RabbitMQ 的连接。
但是,现在在 运行 rails c
、rails g model SomeModel foo:integer
、rails db:migrate
等
时也会执行此操作
对于此应用,RabbitMQ 连接仅在 rails 使用 rails s(erver)
启动时才有意义。
有条件地执行此代码的正确方法是什么?有没有办法查看 Rails 是作为服务器启动,还是仅作为任务运行程序启动?
您使用的是什么网络服务器?例如,在 Puma 上,您可以使用
on_worker_boot do
# Establish RabbitMQ connection
end
另一种可能是在您的初始值设定项中检查 if defined?(Rails::Server)
:只有当 运行 在 Web 服务器的上下文中时才应为真。
之前,我将代码添加到名为 config/initializers/remote_publishers.rb
的文件中,该文件在服务器启动时使用 Bunny gem 建立到 RabbitMQ 的连接。
但是,现在在 运行 rails c
、rails g model SomeModel foo:integer
、rails db:migrate
等
对于此应用,RabbitMQ 连接仅在 rails 使用 rails s(erver)
启动时才有意义。
有条件地执行此代码的正确方法是什么?有没有办法查看 Rails 是作为服务器启动,还是仅作为任务运行程序启动?
您使用的是什么网络服务器?例如,在 Puma 上,您可以使用
on_worker_boot do
# Establish RabbitMQ connection
end
另一种可能是在您的初始值设定项中检查 if defined?(Rails::Server)
:只有当 运行 在 Web 服务器的上下文中时才应为真。