diff options
author | George Claghorn <george.claghorn@gmail.com> | 2018-01-17 12:28:47 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-17 12:28:47 -0500 |
commit | 198e3e3cb784dae54d8d4346667d3fb08c889335 (patch) | |
tree | 0c026aa290b937b8babd785ccc43da081ce2cc3e | |
parent | ffd9902b4464719bd92d49db709d1cf8865337e3 (diff) | |
parent | 53e4a277b38cf218bc8f55f9fa0a7d85aaabb5b9 (diff) | |
download | rails-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/Rakefile | 20 | ||||
-rw-r--r-- | activesupport/lib/active_support/cache/redis_cache_store.rb | 2 | ||||
-rw-r--r-- | activesupport/test/cache/stores/redis_cache_store_test.rb | 6 |
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 |