From bdc3f4d28735bf91c56b3e58e77ee6cd8f1d7d41 Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 12:40:16 +0200 Subject: [PATCH 01/12] add Redic::Pool#call! method delegating to #call - .. to make redic-pool compatible with latest Ohm version (2.3.0) --- .gitignore | 1 + Gemfile | 9 +++++++++ README.md | 4 ++-- lib/redic/pool.rb | 1 + test/ohm_test.rb | 4 ++-- test/pool_test.rb | 22 +++++++++++----------- test/prelude.rb | 2 +- 7 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 Gemfile diff --git a/.gitignore b/.gitignore index 06c6afe..9cb9f59 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /.gs +/Gemfile.lock diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..6c92eb2 --- /dev/null +++ b/Gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gemspec + +group :test do + gem "rake" + gem "cutest" + gem "ohm" +end diff --git a/README.md b/README.md index ae59ce0..a6434e2 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Usage Array.new(100) do Thread.new do - $redis.call("GET", "foo") + $redis.call!("GET", "foo") end end.each(&:join) - $redis.call("INFO", "clients")[/connected_clients:(\d+)/, 1] + $redis.call!("INFO", "clients")[/connected_clients:(\d+)/, 1] # => "10" With Ohm diff --git a/lib/redic/pool.rb b/lib/redic/pool.rb index 4acf428..d61f48e 100644 --- a/lib/redic/pool.rb +++ b/lib/redic/pool.rb @@ -19,6 +19,7 @@ def call(*args) client.call(*args) end end + alias_method :call!, :call def queue(*args) Thread.current[@id] || (Thread.current[@id] = []) diff --git a/test/ohm_test.rb b/test/ohm_test.rb index 19082de..97b1e06 100644 --- a/test/ohm_test.rb +++ b/test/ohm_test.rb @@ -26,7 +26,7 @@ class Comment < Ohm::Model threads.each(&:join) - clients = Parsers.info(Ohm.redis.call("INFO", "clients")).fetch("connected_clients") + clients = Parsers.info(Ohm.redis.call!("INFO", "clients")).fetch("connected_clients") assert_equal(clients, "10") @@ -45,7 +45,7 @@ class Comment < Ohm::Model threads.each(&:join) - clients = Parsers.info(Ohm.redis.call("INFO", "clients")).fetch("connected_clients") + clients = Parsers.info(Ohm.redis.call!("INFO", "clients")).fetch("connected_clients") assert_equal(clients, "10") end diff --git a/test/pool_test.rb b/test/pool_test.rb index 7398f0d..b1a0d94 100644 --- a/test/pool_test.rb +++ b/test/pool_test.rb @@ -8,14 +8,14 @@ threads = Array.new(100) do Thread.new do 10.times do - r.call("GET", "foo") + r.call!("GET", "foo") end end end threads.each(&:join) - clients = Parsers.info(r.call("INFO", "clients")).fetch("connected_clients") + clients = Parsers.info(r.call!("INFO", "clients")).fetch("connected_clients") assert_equal(clients, "10") @@ -23,9 +23,9 @@ end test "MULTI return value with WATCH" do |r| - r.call("DEL", "foo") + r.call!("DEL", "foo") - r.call("WATCH", "foo", "bar") + r.call!("WATCH", "foo", "bar") r.queue("MULTI") r.queue("SET", "foo", "bar") @@ -33,17 +33,17 @@ assert_equal(r.commit.last, ["OK"]) - assert_equal(r.call("GET", "foo"), "bar") + assert_equal(r.call!("GET", "foo"), "bar") teardown(r) end test "Pipelining" do |r| - r.call("DEL", "foo") + r.call!("DEL", "foo") r.queue("SET", "foo", "bar") - assert_equal nil, r.call("GET", "foo") + assert_equal nil, r.call!("GET", "foo") teardown(r) end @@ -52,9 +52,9 @@ threads = Array.new(100) do Thread.new do 10.times do - r.call("SET", "foo", "bar") + r.call!("SET", "foo", "bar") - r.call("DEL", "foo") + r.call!("DEL", "foo") end end end @@ -71,10 +71,10 @@ threads.each(&:join) - clients = Parsers.info(r.call("INFO", "clients")).fetch("connected_clients") + clients = Parsers.info(r.call!("INFO", "clients")).fetch("connected_clients") assert_equal(clients, "10") - assert_equal(r.call("GET", "foo"), nil) + assert_equal(r.call!("GET", "foo"), nil) teardown(r) end diff --git a/test/prelude.rb b/test/prelude.rb index 19cacf0..9b144ec 100644 --- a/test/prelude.rb +++ b/test/prelude.rb @@ -23,5 +23,5 @@ def self.info(reply) sleep(0.5) def teardown(r) - r.pool.shutdown { |c| c.call("QUIT") } + r.pool.shutdown { |c| c.call!("QUIT") } end From 523b850cbad409571884b8e960b7446a77575cae Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 12:44:34 +0200 Subject: [PATCH 02/12] add travis support --- .travis.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f819a51 --- /dev/null +++ b/.travis.yml @@ -0,0 +1 @@ +language: ruby From 42a886c2ca94d530c90d66a5b334133d0133af12 Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 13:14:05 +0200 Subject: [PATCH 03/12] use ruby version 2.2.1 on travis - fixes loading gem dependency for connection_pool --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index f819a51..eec71a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1 +1,3 @@ language: ruby +rmv: + - 2.2.1 From b3fa0364aa51d4bb3777a13ab32a19fe241dcb9b Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 13:16:08 +0200 Subject: [PATCH 04/12] fix typo in travis config --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eec71a9..a642ae0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: ruby -rmv: +rvm: - 2.2.1 From 9df180bb5dc656df7c24f9efd091b3cec308e65d Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 13:39:35 +0200 Subject: [PATCH 05/12] add connection pool to Gemfile - should resolve the following error when bundling on travis: There was a LoadError while loading redic-pool.gemspec: cannot load such file -- connection_pool --- Gemfile | 2 ++ redic-pool.gemspec | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 6c92eb2..05d051b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,8 @@ source "https://rubygems.org" gemspec +gem "connection_pool" + group :test do gem "rake" gem "cutest" diff --git a/redic-pool.gemspec b/redic-pool.gemspec index 4f700d8..1398f0d 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -19,7 +19,6 @@ Gem::Specification.new do |s| s.test_files = `git ls-files -- test/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } - s.add_dependency("connection_pool") s.add_dependency("redic") s.add_development_dependency("cutest") From 1e2d52bfdc0733c091e3d5f49cf1f1aac7e9de7b Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 13:41:34 +0200 Subject: [PATCH 06/12] do only list the cutest gem once in Gemfile --- redic-pool.gemspec | 2 -- 1 file changed, 2 deletions(-) diff --git a/redic-pool.gemspec b/redic-pool.gemspec index 1398f0d..18da098 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -20,6 +20,4 @@ Gem::Specification.new do |s| s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } s.add_dependency("redic") - - s.add_development_dependency("cutest") end From 61b55d246b6b67feee58e304476b2e1db8a29225 Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 13:43:58 +0200 Subject: [PATCH 07/12] remove connection pool from Gemfile --- Gemfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Gemfile b/Gemfile index 05d051b..6c92eb2 100644 --- a/Gemfile +++ b/Gemfile @@ -2,8 +2,6 @@ source "https://rubygems.org" gemspec -gem "connection_pool" - group :test do gem "rake" gem "cutest" From 5f7e410d5fd39bbbc02b4a2c63af632984660662 Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 15:45:08 +0200 Subject: [PATCH 08/12] only use gemspec to specify the gem's dependencies --- Gemfile | 6 ------ redic-pool.gemspec | 7 ++++++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 6c92eb2..b4e2a20 100644 --- a/Gemfile +++ b/Gemfile @@ -1,9 +1,3 @@ source "https://rubygems.org" gemspec - -group :test do - gem "rake" - gem "cutest" - gem "ohm" -end diff --git a/redic-pool.gemspec b/redic-pool.gemspec index 18da098..fc2a88f 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -19,5 +19,10 @@ Gem::Specification.new do |s| s.test_files = `git ls-files -- test/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } - s.add_dependency("redic") + s.add_dependency("redic", "~> 1.5.0") + s.add_dependency("connection_pool", "~> 2.2.0") + + s.add_development_dependency("rake", "~> 10.4.2") + s.add_development_dependency("cutest", "~> 1.2.2") + s.add_development_dependency("ohm", "~> 2.3.0") end From c79cb0581e936cdc8ec203d70bcb540b1133688a Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 15:50:26 +0200 Subject: [PATCH 09/12] do not define gem dependencies overly strict --- redic-pool.gemspec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/redic-pool.gemspec b/redic-pool.gemspec index fc2a88f..5f71919 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -19,10 +19,10 @@ Gem::Specification.new do |s| s.test_files = `git ls-files -- test/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } - s.add_dependency("redic", "~> 1.5.0") - s.add_dependency("connection_pool", "~> 2.2.0") + s.add_runtime_dependency 'redic', '~> 1.5', '>= 1.5.0' + s.add_runtime_dependency 'connection_pool', '~> 2.2', '>= 2.2.0' - s.add_development_dependency("rake", "~> 10.4.2") - s.add_development_dependency("cutest", "~> 1.2.2") - s.add_development_dependency("ohm", "~> 2.3.0") + s.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2' + s.add_development_dependency 'cutest', '~> 1.2', '>= 1.2.2' + s.add_development_dependency 'ohm', '~> 2.3', '>= 2.3.0' end From 610528f39c8aafb027f877001a7e2f1e90fcc3da Mon Sep 17 00:00:00 2001 From: Raphaela Wrede Date: Wed, 30 Sep 2015 15:52:03 +0200 Subject: [PATCH 10/12] add description to gemspec --- redic-pool.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/redic-pool.gemspec b/redic-pool.gemspec index 5f71919..fd9cb5c 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -2,6 +2,7 @@ require "./lib/redic/pool" Gem::Specification.new do |s| s.name = "redic-pool" + s.description = "A Redis connection pool using Redic" s.version = Redic::Pool::VERSION From b0b6a239a9cc8d398080171f1554212db65526dc Mon Sep 17 00:00:00 2001 From: Bruno Abrantes Date: Wed, 30 Sep 2015 16:00:34 +0200 Subject: [PATCH 11/12] Extracts version file from main class to avoid requiring uninstalled gems --- lib/redic/pool.rb | 2 -- lib/redic/version.rb | 6 ++++++ redic-pool.gemspec | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 lib/redic/version.rb diff --git a/lib/redic/pool.rb b/lib/redic/pool.rb index d61f48e..25f83a3 100644 --- a/lib/redic/pool.rb +++ b/lib/redic/pool.rb @@ -2,8 +2,6 @@ require "redic" class Redic::Pool - VERSION = "1.0.1" - attr :url attr :pool diff --git a/lib/redic/version.rb b/lib/redic/version.rb new file mode 100644 index 0000000..e5ec97a --- /dev/null +++ b/lib/redic/version.rb @@ -0,0 +1,6 @@ +module Redic + class Pool + # Current gem version + VERSION = "1.0.1" + end +end diff --git a/redic-pool.gemspec b/redic-pool.gemspec index fc2a88f..542e793 100644 --- a/redic-pool.gemspec +++ b/redic-pool.gemspec @@ -1,4 +1,4 @@ -require "./lib/redic/pool" +require "./lib/redic/version" Gem::Specification.new do |s| s.name = "redic-pool" From 416f30ed848e42e543677a0f8c8585c48ace59d3 Mon Sep 17 00:00:00 2001 From: Bruno Abrantes Date: Wed, 30 Sep 2015 16:05:43 +0200 Subject: [PATCH 12/12] Oops, this should be a Class --- lib/redic/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/redic/version.rb b/lib/redic/version.rb index e5ec97a..d98f12d 100644 --- a/lib/redic/version.rb +++ b/lib/redic/version.rb @@ -1,4 +1,4 @@ -module Redic +class Redic class Pool # Current gem version VERSION = "1.0.1"