aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Claghorn <george.claghorn@gmail.com>2018-01-17 12:28:47 -0500
committerGitHub <noreply@github.com>2018-01-17 12:28:47 -0500
commit198e3e3cb784dae54d8d4346667d3fb08c889335 (patch)
tree0c026aa290b937b8babd785ccc43da081ce2cc3e
parentffd9902b4464719bd92d49db709d1cf8865337e3 (diff)
parent53e4a277b38cf218bc8f55f9fa0a7d85aaabb5b9 (diff)
downloadrails-198e3e3cb784dae54d8d4346667d3fb08c889335.tar.gz
rails-198e3e3cb784dae54d8d4346667d3fb08c889335.tar.bz2
rails-198e3e3cb784dae54d8d4346667d3fb08c889335.zip
Merge pull request #31717 from rails/redis-cache-store-encoding
Convert keys to binary in the Redis cache store
-rw-r--r--activesupport/Rakefile20
-rw-r--r--activesupport/lib/active_support/cache/redis_cache_store.rb2
-rw-r--r--activesupport/test/cache/stores/redis_cache_store_test.rb6
3 files changed, 27 insertions, 1 deletions
diff --git a/activesupport/Rakefile b/activesupport/Rakefile
index 8672ab1542..f10f19be0a 100644
--- a/activesupport/Rakefile
+++ b/activesupport/Rakefile
@@ -14,10 +14,30 @@ Rake::TestTask.new do |t|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
end
+Rake::Task[:test].enhance do
+ Rake::Task["test:cache_stores:redis:ruby"].invoke
+end
+
namespace :test do
task :isolated do
Dir.glob("test/**/*_test.rb").all? do |file|
sh(Gem.ruby, "-w", "-Ilib:test", file)
end || raise("Failures")
end
+
+ namespace :cache_stores do
+ namespace :redis do
+ %w[ ruby hiredis ].each do |driver|
+ task("env:#{driver}") { ENV["REDIS_DRIVER"] = driver }
+
+ Rake::TestTask.new(driver => "env:#{driver}") do |t|
+ t.libs << "test"
+ t.test_files = ["test/cache/stores/redis_cache_store_test.rb"]
+ t.warning = true
+ t.verbose = true
+ t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
+ end
+ end
+ end
+ end
end
diff --git a/activesupport/lib/active_support/cache/redis_cache_store.rb b/activesupport/lib/active_support/cache/redis_cache_store.rb
index e7f015bff5..0368423dad 100644
--- a/activesupport/lib/active_support/cache/redis_cache_store.rb
+++ b/activesupport/lib/active_support/cache/redis_cache_store.rb
@@ -363,7 +363,7 @@ module ActiveSupport
# Truncate keys that exceed 1kB.
def normalize_key(key, options)
- truncate_key super
+ truncate_key super.b
end
def truncate_key(key)
diff --git a/activesupport/test/cache/stores/redis_cache_store_test.rb b/activesupport/test/cache/stores/redis_cache_store_test.rb
index 7f684f7a0f..ee79f954ec 100644
--- a/activesupport/test/cache/stores/redis_cache_store_test.rb
+++ b/activesupport/test/cache/stores/redis_cache_store_test.rb
@@ -5,6 +5,12 @@ require "active_support/cache"
require "active_support/cache/redis_cache_store"
require_relative "../behaviors"
+driver_name = %w[ ruby hiredis ].include?(ENV["REDIS_DRIVER"]) ? ENV["REDIS_DRIVER"] : "hiredis"
+driver = Object.const_get("Redis::Connection::#{driver_name.camelize}")
+
+Redis::Connection.drivers.clear
+Redis::Connection.drivers.append(driver)
+
module ActiveSupport::Cache::RedisCacheStoreTests
class LookupTest < ActiveSupport::TestCase
test "may be looked up as :redis_cache_store" do