Comments (3)
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.
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.
@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)
- TTL not set on session keys HOT 3
- 2.1.0+ can't remove keys from the session HOT 4
- Version 2.1.1 is missing. Can't install. HOT 2
- 2.1.2 - NoMethodError - undefined method `private_id' HOT 2
- Session can get lost after a Devise sign in HOT 7
- built in rake conflict HOT 3
- Problem with redis gem > 4.2 HOT 2
- Incompatible with Redis Store 1.9.0 HOT 3
- Got "undefined method `public_id' for String" when calling delete_session HOT 2
- Unclear how we should specify self-signed certificates for Redis TLS HOT 3
- Issue with rack session in sinatra HOT 1
- Plans to release a 2.1.4? HOT 1
- Rack::Session::Redis#generate_unique_sid's unique session key generation logic does not work HOT 4
- Lifetime mismatch between session key and session value when `expire_after: nil` is set. HOT 3
- Rack3 support HOT 6
- Release with support for Rack 3? HOT 1
- session token is valid even after the logout
- Facing issues in new builds impacting production env
- Session token is not changing even after logout.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redis-rack.