rails-Sidekiq-Redis:RuntimeError(提供了节点名或服务名,或未知)
rails-Sidekiq-Redis : RuntimeError (nodename nor servname provided, or not known)
我正在尝试 运行 一个 Rails 应用程序,使用 Sidekiq w Redis ..
config/initializers/
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 正在 运行ning ...
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 是
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
然而 运行在开发模式下在本地主机上,我得到
(0.2ms) 开始交易
SQL (0.5ms) INSERT INTO "messages" (3.0ms) 提交事务
(3.0 毫秒)提交事务
在 393 毫秒内完成 500 个内部服务器错误(ActiveRecord:3.7 毫秒)
RuntimeError(提供了节点名或服务名,或未知):
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
听起来主机名 redis
DNS 查找失败。
我正在尝试 运行 一个 Rails 应用程序,使用 Sidekiq w Redis ..
config/initializers/
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 正在 运行ning ...
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 是
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
然而 运行在开发模式下在本地主机上,我得到
(0.2ms) 开始交易
SQL (0.5ms) INSERT INTO "messages" (3.0ms) 提交事务
(3.0 毫秒)提交事务
在 393 毫秒内完成 500 个内部服务器错误(ActiveRecord:3.7 毫秒)
RuntimeError(提供了节点名或服务名,或未知):
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
听起来主机名 redis
DNS 查找失败。