ruby-on-rails-4 - Heroku 在 Rails 4 应用程序中调用 Resque.enqueue 时连接到 Redis localhost
问题描述
在 Heroku 中,当运行 Resque.enqueue 命令时,Heroku 会尝试通过 localhost 连接到 redis。在 config/initializers/redis.rb 中,正确的 URL 设置为 $redis = Redis.new(url: ENV['REDIS_URL']) 并且 $redis 实例化没有错误。在调用 enqueue 方法的控制器中 $redis.inspect 返回正确的值。
收到的错误是:Redis::CannotConnectError(在 localhost:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错):
宝石文件
gem 'rails', '4.2.6'
gem 'redis', "~> 4.1.0"
gem 'resque', "~> 1.27.3"
配置/初始化程序/redis.rb
if Rails.env.production?
$redis = Redis.new(url: ENV['REDIS_URL'])
puts "$redis.inspect => #{$redis.inspect} "
end
lib/tasks/resque.rake
require "resque/tasks"
task "resque:setup" => :environment
rakefile 任务 "resque:preload" => :environment
过程文件
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: env QUEUE=* bundle exec rake resque:work
解决方案
问题已解决,redis 指向 Heroku 中的正确服务器。
在 config/initializers/redis.rb
改变了这个:
$redis = Redis.new(url: ENV['REDIS_URL'])
对此:
$redis = Resque.redis = Redis.new(url: ENV['REDIS_URL'])
推荐阅读
- java - 毕加索保留旧图像直到加载新图像
- docker - Docker 构建无法复制文件
- javascript - Nativescript 4 - Http 模块将 +(加号)转换为空格
- ios - 如何从 UIActivityViewController 中排除操作活动?
- sas - LAG 功能的替代方案
- linux - 解释修补/保护 POP SS 后跟 #BP 中断 (INT3) 的 Linux 提交消息
- android - 错误:无法解析“:app@debug/compileClasspath”的依赖关系:无法解析com.android.support:appcompat-v7:27.1.1
- angular - Angular/Typescript 函数(){} vs ()=>{}
- list - 如何检查 Java 集合 Arraylist 中的日期部分?
- html - 如何在html中的文本之后从函数中打印值