soveran / ohm

Object-Hash Mapping for Redis

Home Page:http://ohm.keyvalue.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ERR unknown command 'url'

scalp42 opened this issue · comments

Hi folks,

I'm testing Ohm with Sinatra and I'm running into an issue using redis-rb:

Ohm.redis = Redis.new(url: 'redis://127.0.0.1:6379/1', timeout: 2.0, driver: :hiredis)

class User < Ohm::Model
  attribute :first_name
end

class TestController < Sinatra::Base
      get '/new' do
        Ohm.redis.ping
        User.all
        # User.create(first_name: params['first_name'] )
      end
end

Redis logs:

1474582937.388670 [0 127.0.0.1:62349] "select" "1"
1474582937.388811 [1 127.0.0.1:62349] "ping"
1474582937.399781 [1 127.0.0.1:62349] "SMEMBERS" "User:all"

Sinatra logs:

127.0.0.1 - - [22/Sep/2016:15:22:17 -0700] "GET /new?first_name=antho HTTP/1.1" 200 - 0.0255

It appears to be working correctly until I uncomment User.create(first_name: params['first_name'] ):

1474583085.810329 [0 127.0.0.1:62624] "select" "1"
1474583085.810430 [1 127.0.0.1:62624] "ping"
Listening on localhost:9393, CTRL+C to stop
2016-09-22 15:24:45 - Redis::CommandError - ERR unknown command 'url':
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/redis-3.3.1/lib/redis/client.rb:121:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/redis-3.3.1/lib/redis.rb:2700:in `block in method_missing'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/redis-3.3.1/lib/redis.rb:58:in `block in synchronize'
  /Users/scalp/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/redis-3.3.1/lib/redis.rb:58:in `synchronize'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/redis-3.3.1/lib/redis.rb:2699:in `method_missing'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/ohm-3.0.3/lib/ohm.rb:1397:in `script'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/ohm-3.0.3/lib/ohm.rb:1356:in `save'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/ohm-3.0.3/lib/ohm.rb:1098:in `create'
  /Users/scalp/testing/controllers/test.rb:14:in `block (2 levels) in <class:TestController>'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `block in compile!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (3 levels) in route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:in `route_eval'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (2 levels) in route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:in `block in process_route'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `process_route'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:in `block in route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `each'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in `block in dispatch!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in `dispatch!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `block in call!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `call!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/logger.rb:15:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:954:in `forward'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1028:in `route_missing'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:989:in `route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:985:in `route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:985:in `route!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in `block in dispatch!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in `dispatch!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `block in call!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `call!'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/logger.rb:15:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/logger.rb:15:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `block in call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:in `synchronize'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/tempfile_reaper.rb:15:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/lint.rb:49:in `_call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/lint.rb:37:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/showexceptions.rb:24:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/chunked.rb:54:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/content_length.rb:15:in `call'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/connection.rb:86:in `block in pre_process'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/connection.rb:84:in `catch'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/connection.rb:84:in `pre_process'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/connection.rb:53:in `process'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/connection.rb:39:in `receive_data'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:194:in `run_machine'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:194:in `run'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/backends/base.rb:73:in `start'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/thin-1.7.0/lib/thin/server.rb:162:in `start'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/handler/thin.rb:19:in `run'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/server.rb:286:in `start'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/lib/rack/server.rb:147:in `start'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/gems/rack-1.6.4/bin/rackup:4:in `<top (required)>'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/bin/rackup:23:in `load'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/bin/rackup:23:in `<main>'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/bin/ruby_executable_hooks:15:in `eval'
  /Users/scalp/.rvm/gems/ruby-2.3.1@testing/bin/ruby_executable_hooks:15:in `<main>'
2016-09-22 15:24:45 - Redis::CommandError - ERR unknown command 'url':

Any ideas ? Thanks in advance for helping 🍶

Hello @scalp42, sorry for the delay (I was on a trip). The Redis client has to be compatible with Redic in terms of API, which is not the case for redis-rb. Did you sorted it out?

I'm closing this issue as using a different Redis client is not the intended use, but please reply to this thread so we can figure out what's best for your use case.