我有一个与我的rails应用程序并行运行的ruby文件,侦听RabbitMQ队列并在收到消息时更新模型中的对象:
require "bunny"
require 'json'
require 'rubygems'
require ::File.expand_path('../../config/environment', __FILE__)
Rails.logger.info "MQ Host: " + Rails.application.config.mq_host
Rails.logger.info "MQ Username: " + Rails.application.config.mq_username
conn = Bunny.new(automatically_recover: false,
hostname: Rails.application.config.mq_host,
user: Rails.application.config.mq_username,
password: Rails.application.config.mq_password)
conn.start
ch = conn.create_channel
q = ch.queue(Rails.application.config.mq_queue,
durable: Rails.application.config.mq_durable)
begin
puts " [*] Waiting for messages. To exit press CTRL+C"
q.subscribe(block: true, manual_ack: true) do |delivery_info, properties, body|
# do stuff
end
它是这样运行的:
bundle exec ruby -rubygems bin/recv.rb
它从Rails应用程序读取配置并加载,修改和保存模型就好了。我无法做到的是登录Rails记录器。我的意思是我正在记录的消息不会出现在主应用程序日志中,也不会输出到执行脚本的控制台。
来自:
的输出puts "Logger path: #{Rails.logger.instance_variable_get(:@logdev).dev.path}"
puts "Rails env: #{ENV['RAILS_ENV']} / #{Rails.env}"
是
Logger path: .../log/development.log
Rails env: / development
正如您所料。
有谁能告诉我为什么我没有看到日志消息?