方案redis不接受注册表部分::(或错误的主机名?)(URI :: InvalidURIError)

时间:2015-03-04 15:05:06

标签: ruby-on-rails ruby-on-rails-4 rspec rspec-rails

我已经安装了Rspec并试图为模型运行第一个测试,但是我收到了这个错误

.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/generic.rb:214:in `initialize': the scheme redis does not accept registry part: : (or bad hostname?) (URI::InvalidURIError)
  from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/common.rb:218:in `new'

在测试开始运行之前。我在我的项目中使用Redis和Sidekick。有谁知道如何克服这个驼峰?感谢

编辑:完全回溯

ewamarciniak$ bundle exec rspec spec/models/message_spec.rb
/Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/bundler-1.7.2/lib/bundler/runtime.rb:222: warning: Insecure world writable dir /usr in PATH, mode 040777
/Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/bundler-1.7.2/lib/bundler/runtime.rb:222: warning: Insecure world writable dir /usr in PATH, mode 040777
/Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/generic.rb:214:in `initialize': the scheme redis does not accept registry part: : (or bad hostname?) (URI::InvalidURIError)
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/common.rb:218:in `new'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/common.rb:218:in `parse'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/uri/common.rb:747:in `parse'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/sidekiq-3.3.0/lib/sidekiq/redis_connection.rb:60:in `log_info'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/sidekiq-3.3.0/lib/sidekiq/redis_connection.rb:19:in `create'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/sidekiq-3.3.0/lib/sidekiq.rb:83:in `redis='
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/config/initializers/sidekiq.rb:14:in `block in <top (required)>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/sidekiq-3.3.0/lib/sidekiq.rb:63:in `configure_client'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/config/initializers/sidekiq.rb:13:in `<top (required)>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `load'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `block in load'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:in `load_dependency'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `load'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/engine.rb:648:in `block in load_config_initializer'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:161:in `instrument'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/engine.rb:647:in `load_config_initializer'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/engine.rb:611:in `each'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/engine.rb:611:in `block in <class:Engine>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:30:in `run'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) in each_strongly_connected_component_from'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:44:in `each'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:44:in `tsort_each_child'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `call'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `call'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each'
    from /Users/ewamarciniak/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/application.rb:288:in `initialize!'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/railtie.rb:194:in `public_send'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/railties-4.1.1/lib/rails/railtie.rb:194:in `method_missing'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/config/environment.rb:5:in `<top (required)>'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/spec/rails_helper.rb:4:in `require'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/spec/rails_helper.rb:4:in `<top (required)>'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/spec/models/message_spec.rb:1:in `require'
    from /Users/ewamarciniak/Documents/Projects/popdeem-server/spec/models/message_spec.rb:1:in `<top (required)>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/configuration.rb:1226:in `load'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/configuration.rb:1224:in `each'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/configuration.rb:1224:in `load_spec_files'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/runner.rb:97:in `setup'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/runner.rb:85:in `run'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/runner.rb:70:in `run'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/runner.rb:38:in `invoke'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/gems/rspec-core-3.2.1/exe/rspec:4:in `<top (required)>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/bin/rspec:23:in `load'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/bin/rspec:23:in `<main>'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/ewamarciniak/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `<main>'

编辑:config / initializers / sidekiq.rb

rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
rails_env = Rails.env || 'development'

redis_config = YAML.load_file(rails_root.to_s + '/config/redis.yml')
redis_config.merge! redis_config.fetch(Rails.env, {})
redis_config.symbolize_keys!

Sidekiq.configure_server do |config|
  config.redis = { :url => "redis://#{redis_config[:host]}:#{redis_config[:port]}/12", :namespace => 'Sidekiq' }
end

Sidekiq.configure_client do |config|
  config.redis = { :url => "redis://#{redis_config[:host]}:#{redis_config[:port]}/12", :namespace => 'Sidekiq' }
end

1 个答案:

答案 0 :(得分:0)

redis_config[:host]redis_config[:port]nil或为空。似乎这些配置选项在config/redis.yml中未定义。