Coder Social home page Coder Social logo

Comments (3)

tubbo avatar tubbo commented on May 22, 2024 2

I think the intention is that you should be able to call

Redis::Rack::Connection.new(redis_server: { url: 'redis://localhost/0', namespace: 'foobar' })

but if I'm reading this code right, having any DB in the path might cause that to be overridden. So I think checking whether a / appears in the path should suffice in allowing the above configuration and still supporting URLs like

Redis::Rack::Connection.new(redis_server: 'redis://localhost/0/foobar')

from redis-rack.

tubbo avatar tubbo commented on May 22, 2024

update: The above code I posted does seem to work. Here's a quick test I wrote in redis-store to ensure that whatever you pass into :redis_server will be used as the arguments to Redis::Store::Factory.create. So you should be able to use the right namespace here while still providing an IANA-standard Redis URL:

diff --git a/test/redis/store/factory_test.rb b/test/redis/store/factory_test.rb
index cacd653..000645f 100644
--- a/test/redis/store/factory_test.rb
+++ b/test/redis/store/factory_test.rb
@@ -40,6 +40,12 @@
       it "uses specified namespace" do
         store = Redis::Store::Factory.create :namespace => "theplaylist"
         store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
+
+        store = Redis::Store::Factory.create(
+          url: 'redis://127.0.0.1:6380/2',
+          namespace: 'foo'
+        )
+        store.to_s.must_equal("Redis Client connected to 127.0.0.1:6380 against DB 2 with namespace foo")
       end

       it "uses specified key_prefix as namespace" d

from redis-rack.

mtgto avatar mtgto commented on May 22, 2024

@tubbo Thank you for your kindy explanation. 😃

I think the intention is that you should be able to call
Redis::Rack::Connection.new(redis_server: { url: 'redis://localhost/0', namespace: 'foobar' })

It code works!
I apologize for my lack of research of your source code 🙇


As a matter of fact, I wanted to use redis-rack from redis-actionpack.
I use shared redis-server which used by some server softwares.
I need to set key prefix to distinguish which keys is created by.
But I can't find the doc in redis-actionpack, redis-store and redis-rack how to define key prefix.
Thus I post this issue.

For now, my config/initializers/session_store.rb can define namespace (key prefix) not violating IANA-standard Redis URL.
Example:

Rails.application.config.session_store :redis_store,
  servers: {
    url: ENV['REDIS_SERVER_FOR_SESSION'],
    namespace: 'my_server',
  },
  expire_after: 1.day,
  key: '_my_server_session',
  threadsafe: true,
  secure: Rails.env.production?,
  httponly: true

from redis-rack.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.