Ruby on rails RubyonRails上的Redis-未初始化常量
我在安装了Apache的Ubuntu服务器上使用passenger 当我尝试加载带有redis的ruby应用程序时,我得到了这个错误Ruby on rails RubyonRails上的Redis-未初始化常量,ruby-on-rails,redis,passenger,resque,nameerror,Ruby On Rails,Redis,Passenger,Resque,Nameerror,我在安装了Apache的Ubuntu服务器上使用passenger 当我尝试加载带有redis的ruby应用程序时,我得到了这个错误 Error message: uninitialized constant Redis::Client::ALIASES Exception class: NameError Application root: /xxx/ruby 0 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/redi
Error message:
uninitialized constant Redis::Client::ALIASES
Exception class:
NameError
Application root:
/xxx/ruby
0 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/redis-namespace-0.4.3/lib/redis/namespace.rb 128 in `'
1 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/redis-namespace-0.4.3/lib/redis/namespace.rb 4 in `'
2 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/redis-namespace-0.4.3/lib/redis/namespace.rb 3 in `'
3 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/resque-1.8.2/lib/resque.rb 1 in `'
4 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/resque-1.8.2/lib/resque/server.rb 3 in `'
5 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 68 in `require'
6 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 68 in `block (2 levels) in require'
7 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 66 in `each'
8 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 66 in `block in require'
9 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 55 in `each'
10 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler/runtime.rb 55 in `require'
11 /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.3/lib/bundler.rb 119 in `require'
12 /xxx/ruby/config/application.rb 7 in `'
13 /xxx/ruby/config/environment.rb 4 in `require'
14 /xxx/ruby/config/environment.rb 4 in `'
15 config.ru 3 in `require'
16 config.ru 3 in `block in '
17 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb 51 in `instance_eval'
18 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb 51 in `initialize'
19 config.ru 1 in `new'
20 config.ru 1 in `'/usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb 225 in `eval'
21 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb 225 in `load_rack_app'
22 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb 157 in `block in initialize_server'
23 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/utils.rb 572 in `report_app_init_status'
24 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb 154 in `initialize_server'
25 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb 204 in `start_synchronously'
26 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb 180 in `start'
27 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb 129 in `start'
28 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb 253 in `block (2 levels) in spawn_rack_application'
29 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 132 in `lookup_or_add'
30 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb 246 in `block in spawn_rack_application'
31 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 82 in `block in synchronize'
32 < td=""> <> prelude> 10:in `synchronize'
33 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 79 in `synchronize'
34 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb 244 in `spawn_rack_application'
35 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb 137 in `spawn_application'
36 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb 275 in `handle_spawn_application'
37 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb 357 in `server_main_loop'
38 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb 206 in `start_synchronously'
39 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/helper-scripts/passenger-spawn-server 99 in `'
这就是我的resque_r.rb的样子(它位于config/initializers中)
我的宝石档案
source 'https://rubygems.org'
gem 'rails', '3.2.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', :require => 'sass'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platform => :ruby
gem 'uglifier', '>= 1.0.3'
gem 'compass-rails'
end
gem 'twitter-bootstrap-rails', "~> 2.0rc0"
gem 'jquery-rails'
gem 'feedzirra'
gem "friendly_id", "~> 4.0.1"
gem 'acts-as-taggable-on', '~> 2.2.2'
gem 'will_paginate', '~> 3.0'
gem 'gon'
gem 'wikitext'
gem 'twitter'
gem 'yaml_db'
#JSON PARSER
gem "oj", "~> 1.2.8"
gem "mysql2", "~> 0.3.11"
gem 'resque', :require => "resque/server"
gem 'resque-scheduler', :require => 'resque_scheduler'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
从堆栈跟踪来看,在加载
config.ru
时似乎发生了错误
您的config.ru文件中似乎没有包含resque/server
以下是我在一个项目中使用的配置:
require ::File.expand_path('../config/environment', __FILE__)
require 'resque/server'
run Rack::URLMap.new \
"/" => DmWorkflow::Application,
"/resque" => Resque::Server.new
另外,我不知道这是否对您有影响,但我在我的Gemfile
中包含了以下内容:
gem 'resque'
gem 'resque-loner'
gem 'resque-scheduler', ">= 2.0.0.h"
您正在运行旧版本的
resque
gem。redis namespace
version1.0.2
及更高版本上的resque
新版本,但堆栈跟踪显示它加载了redis namespace
v0.4.3
尝试运行捆绑包更新
。如果版本仍然不正确,请将以下内容添加到GEM文件中:
gem 'redis-namespace', '~> 1.0.2'
或者,您可以通过git安装边缘版本的resque
:
gem 'resque', github: 'defunkt/resque'
我在服务器上安装了错误版本的redis。我没有使用apt-get-install-redis-server,而是手动安装了redis-server,解决了这个问题 我不太明白你做了什么来修复这个问题,因为我相信这实际上是redis命名空间中的一个bug。请参阅。请将您的GEM文件内容张贴在此处。看起来像是宝石冲突。@论文更新,谢谢!你在Ubuntu和Apache上有吗?它对我没有帮助,它在本地对我有效,但在服务器上无效。我正在heroku上部署。您是否在服务器上运行了bundle install
?我尝试更改您的GEM文件中的设置,它安装redis 2.2.2(而不是3.0)并使用该设置。但这又给了我另一个错误。和这个人一样,我可以告诉他,我的redis服务器版本太旧了;我会更新它,看看它是否给我任何错误。尽快给你回电话!有趣的。。。我的Gemfile.lock
也显示了redis(2.2.2)
。但一切都很好。据rubygems.org称,redis(3.0.0)
昨天刚刚发布。这可能是你的问题的一部分。实际上,我使用sudo apt get install redis server安装了一个旧的v。对于redis,这是一个很大的失误,我手动卸载并重新安装了redis,解决了问题!:)主要问题是我使用了错误的redis版本。我使用sudo apt get install redis server安装了一个旧的v。redis的。我卸载了它并手动安装了redis,解决了我遇到的问题。但是我确实用名称空间1.0.2更新了我的gemfile,谢谢你提供的信息!当@Narkoz编写gem'redis namespace'时,请将其放在gem文件中,“~>1.0.2”强制使用该版本的redis namespace可能会起到作用,但问题最终是由我发布的问题引起的。
gem 'redis-namespace', '~> 1.0.2'
gem 'resque', github: 'defunkt/resque'