之前,我将代码添加到名为config/initializers/remote_publishers.rb
的文件中,该文件在服务器启动时使用Bunny gem建立了与RabbitMQ的连接。
但是,现在在运行rails c
,rails g model SomeModel foo:integer
,rails db:migrate
等时也会执行此操作。
对于此应用程序,仅当使用rails s(erver)
启动rails时,RabbitMQ连接才有意义。
有条件执行此代码的正确方法是什么?有没有办法查看Rails是作为服务器启动还是仅作为任务运行器启动?
答案 0 :(得分:2)
您正在使用什么Web服务器?例如,在Puma上,您可以使用
on_worker_boot do
# Establish RabbitMQ connection
end
另一种可能是在初始化程序中检查if defined?(Rails::Server)
:仅当在Web服务器的上下文中运行时,才应如此。