ruby-on-rails – Resque没有获取Redis配置设置
发布时间:2020-12-16 21:29:48 所属栏目:百科 来源:网络整理
导读:我试图获得在Unicorn下运行的Rails应用程序连接到受密码保护的Redis服务器时出现意外和重大问题. 在命令行上使用bundle exec rails c production,我可以通过Resque.redis发出命令.但是,当它在Unicorn下分叉时,我的配置似乎正在丢失. 使用非密码保护的Redis服
我试图获得在Unicorn下运行的Rails应用程序连接到受密码保护的Redis服务器时出现意外和重大问题.
在命令行上使用bundle exec rails c production,我可以通过Resque.redis发出命令.但是,当它在Unicorn下分叉时,我的配置似乎正在丢失. 使用非密码保护的Redis服务器Just Works.但是,我打算在其他服务器上运行工作程序,而不是Redis服务器所在的服务器,因此我需要密码保护. 我也成功地使用了密码保护(使用相同的技术)但使用Passenger而不是Unicorn. 我有以下设置: # config/resque.yml development: localhost:6379 test: localhost:6379 production: redis://user:PASSWORD@oak.isc.org:6379 . # config/initializers/redis.rb rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..' rails_env = ENV['RAILS_ENV'] || 'development' $resque_config = YAML.load_file(rails_root + '/config/resque.yml') uri = URI.parse($resque_config[rails_env]) Resque.redis = Redis.new(host: uri.host,port: uri.port,password: uri.password) . # unicorn.rb bootup file preload_app true before_fork do |server,worker| Redis.current.quit end after_fork do |server,worker| Redis.current.quit end . 解决方法
更新基于
@lmarlow’s comment to a resque issue的完全不同的想法.
我打赌它会在你拥有Redis的地方打破?> 3(我的意思是ruby客户端版本,而不是服务器版本). 在撰写本文时,Resque需要Redis~> 2,但未在其gemspec中指定.因此,您必须通过将其添加到您的Gemfile来帮助它: gem 'redis','~>2' # until a new version of resque comes out gem 'resque' 此外,确保在任何地方都使用捆绑器.否则,如果您的系统有新版本的Redis gem,它将被使用,Resque将像以前一样失败. 最后,一个化妆品说明……你可以简化配置: # config/initializers/redis.rb $resque_redis_url = uris_per_environment[rails_env] # note no URI.parse Resque.redis = $resque_redis_url 然后 # unicorn.rb bootup file after_fork do |server,worker| Resque.redis = $resque_redis_url end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容