rails-Sidekiq-Redis:RuntimeError(提供节点名称或服务名称,或未知)

时间:2015-07-28 22:03:35

标签: ruby-on-rails-4 redis sidekiq

我正在尝试使用Sidekiq w Redis运行Rails应用程序..

配置/初始化/

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://redis:6379/1', namespace:      'delay_message_dev', driver: :hiredis }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://redis:6379/1', namespace: 'delay_message_dev', driver: :hiredis }
end

sidekiq-server正在运行......

The server is now ready to accept connections on port 6379

在我的message_controller.rb中,在db中创建消息后,我运行

DelayMessageWorker.perform_at(@message[:delay_until_time], @message[:id])

我的DelayMessageWorker类是

class DelayMessageWorker
  include Sidekiq::Worker

  def perform(*args)

    # Get the message object
    message = Message.find(message_id)

    # Send an email
    MessageMailer.delay.default(message.recipient_email, message.text)

    # Change the status of the Message object to `sent`
    message.sent = true
    message.save  
  end
end

然而在开发模式下运行localhost,我得到了

(0.2ms)开始交易       SQL(0.5ms)INSERT INTO“messages”(3.0ms)提交事务    (3.0ms)提交事务
    在393ms内完成500内部服务器错误(ActiveRecord:3.7ms)

RuntimeError(提供nodename或servname,或未知):   app / controllers / messages_controller.rb:34:在block in create' app/controllers/messages_controller.rb:31:in创建'

消息写在数据库中,因此错误来自Sidekiq-Redis?
谢谢你的建议

更新

我修改了我的sidekiq.rb初始化程序以获得正确的redis主机

redis = YAML::load(File.open("#{ Rails.root }/config/redis.yml"))[::Rails.env]

Sidekiq.configure_server do |config|
  config.redis = { url: "redis://#{ redis['host'] }:#{ redis['port'] }/0", namespace: 'delay_message_dev', driver: :hiredis }
end

Sidekiq.configure_client do |config|
  config.redis = { url: "redis://#{ redis['host'] }:#{ redis['port'] }/0", namespace: 'delay_message_dev', driver: :hiredis }
end

1 个答案:

答案 0 :(得分:0)

Sounds like the hostname redis is failing DNS lookup.