From cd635ad20bf4f8dda0bfa50440d7cd479d3ba504 Mon Sep 17 00:00:00 2001 From: katafrakt Date: Fri, 3 Oct 2014 00:18:46 +0200 Subject: [PATCH 1/3] add support for active job --- .travis.yml | 1 + Appraisals | 4 + delayed_paperclip.gemspec | 2 +- gemfiles/rails3_1.gemfile.lock | 2 +- gemfiles/rails3_2.gemfile.lock | 2 +- gemfiles/rails4.gemfile.lock | 2 +- gemfiles/rails4_2.gemfile | 7 + gemfiles/rails4_2.gemfile.lock | 181 +++++++++++++++++++++++ lib/delayed_paperclip.rb | 1 + lib/delayed_paperclip/jobs.rb | 1 + lib/delayed_paperclip/jobs/active_job.rb | 16 ++ spec/integration/active_job_spec.rb | 25 ++++ spec/spec_helper.rb | 4 + 13 files changed, 244 insertions(+), 4 deletions(-) create mode 100644 gemfiles/rails4_2.gemfile create mode 100644 gemfiles/rails4_2.gemfile.lock create mode 100644 lib/delayed_paperclip/jobs/active_job.rb create mode 100644 spec/integration/active_job_spec.rb diff --git a/.travis.yml b/.travis.yml index 5bc9e11..67eb5a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,5 +17,6 @@ gemfile: - gemfiles/rails3_1.gemfile - gemfiles/rails3_2.gemfile - gemfiles/rails4.gemfile + - gemfiles/rails4_2.gemfile diff --git a/Appraisals b/Appraisals index ae685d3..7351024 100644 --- a/Appraisals +++ b/Appraisals @@ -8,4 +8,8 @@ end appraise "rails4" do gem "rails", "~> 4.0.3" +end + +appraise "rails4_2" do + gem "rails", "~> 4.2.0.beta2" end \ No newline at end of file diff --git a/delayed_paperclip.gemspec b/delayed_paperclip.gemspec index a212493..b58700c 100644 --- a/delayed_paperclip.gemspec +++ b/delayed_paperclip.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| s.add_dependency 'paperclip', [">= 3.3"] s.add_development_dependency 'mocha' - s.add_development_dependency "rspec" + s.add_development_dependency "rspec", '< 3.0' s.add_development_dependency 'sqlite3' s.add_development_dependency 'delayed_job' s.add_development_dependency 'delayed_job_active_record' diff --git a/gemfiles/rails3_1.gemfile.lock b/gemfiles/rails3_1.gemfile.lock index d801fd3..8abf78a 100644 --- a/gemfiles/rails3_1.gemfile.lock +++ b/gemfiles/rails3_1.gemfile.lock @@ -158,6 +158,6 @@ DEPENDENCIES railties rake resque - rspec + rspec (< 3.0) sidekiq sqlite3 diff --git a/gemfiles/rails3_2.gemfile.lock b/gemfiles/rails3_2.gemfile.lock index 35fa1a9..b89a563 100644 --- a/gemfiles/rails3_2.gemfile.lock +++ b/gemfiles/rails3_2.gemfile.lock @@ -156,6 +156,6 @@ DEPENDENCIES railties rake resque - rspec + rspec (< 3.0) sidekiq sqlite3 diff --git a/gemfiles/rails4.gemfile.lock b/gemfiles/rails4.gemfile.lock index 1d6f937..f8cb230 100644 --- a/gemfiles/rails4.gemfile.lock +++ b/gemfiles/rails4.gemfile.lock @@ -152,6 +152,6 @@ DEPENDENCIES railties rake resque - rspec + rspec (< 3.0) sidekiq sqlite3 diff --git a/gemfiles/rails4_2.gemfile b/gemfiles/rails4_2.gemfile new file mode 100644 index 0000000..d5dd655 --- /dev/null +++ b/gemfiles/rails4_2.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "rails", "~> 4.2.0.beta2" + +gemspec :path => "../" diff --git a/gemfiles/rails4_2.gemfile.lock b/gemfiles/rails4_2.gemfile.lock new file mode 100644 index 0000000..7ba663f --- /dev/null +++ b/gemfiles/rails4_2.gemfile.lock @@ -0,0 +1,181 @@ +PATH + remote: ../ + specs: + delayed_paperclip (2.8.0) + paperclip (>= 3.3) + +GEM + remote: http://rubygems.org/ + specs: + actionmailer (4.2.0.beta2) + actionpack (= 4.2.0.beta2) + actionview (= 4.2.0.beta2) + activejob (= 4.2.0.beta2) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.3) + actionpack (4.2.0.beta2) + actionview (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + rack (~> 1.6.0.beta) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.3) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + actionview (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.3) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + activejob (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + globalid (>= 0.3.0) + activemodel (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + builder (~> 3.1) + activerecord (4.2.0.beta2) + activemodel (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + arel (>= 6.0.0.beta1, < 6.1) + activesupport (4.2.0.beta2) + i18n (>= 0.7.0.beta1, < 0.8) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.1) + tzinfo (~> 1.1) + appraisal (1.0.2) + bundler + rake + thor (>= 0.14.0) + arel (6.0.0.beta1) + builder (3.2.2) + celluloid (0.15.2) + timers (~> 1.1.0) + climate_control (0.0.3) + activesupport (>= 3.0) + cocaine (0.5.4) + climate_control (>= 0.0.3, < 1.0) + connection_pool (2.0.0) + delayed_job (4.0.4) + activesupport (>= 3.0, < 4.2) + delayed_job_active_record (4.0.2) + activerecord (>= 3.0, < 4.2) + delayed_job (>= 3.0, < 4.1) + diff-lcs (1.2.5) + erubis (2.7.0) + globalid (0.3.0) + activesupport (>= 4.1.0) + hike (1.2.3) + i18n (0.7.0.beta1) + json (1.8.1) + loofah (2.0.1) + nokogiri (>= 1.5.9) + mail (2.6.1) + mime-types (>= 1.16, < 3) + metaclass (0.0.4) + mime-types (2.3) + mini_portile (0.6.0) + minitest (5.4.2) + mocha (1.1.0) + metaclass (~> 0.0.1) + mono_logger (1.1.0) + multi_json (1.10.1) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) + paperclip (4.2.0) + activemodel (>= 3.0.0) + activesupport (>= 3.0.0) + cocaine (~> 0.5.3) + mime-types + rack (1.6.0.beta) + rack-protection (1.5.3) + rack + rack-test (0.6.2) + rack (>= 1.0) + rails (4.2.0.beta2) + actionmailer (= 4.2.0.beta2) + actionpack (= 4.2.0.beta2) + actionview (= 4.2.0.beta2) + activejob (= 4.2.0.beta2) + activemodel (= 4.2.0.beta2) + activerecord (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.0.beta2) + sprockets-rails (~> 3.0.0.beta1) + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.3) + activesupport + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.1) + loofah (~> 2.0) + railties (4.2.0.beta2) + actionpack (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (10.3.2) + redis (3.1.0) + redis-namespace (1.5.1) + redis (~> 3.0, >= 3.0.4) + resque (1.25.2) + mono_logger (~> 1.0) + multi_json (~> 1.0) + redis-namespace (~> 1.3) + sinatra (>= 0.9.2) + vegas (~> 0.1.2) + rspec (2.14.1) + rspec-core (~> 2.14.0) + rspec-expectations (~> 2.14.0) + rspec-mocks (~> 2.14.0) + rspec-core (2.14.8) + rspec-expectations (2.14.5) + diff-lcs (>= 1.1.3, < 2.0) + rspec-mocks (2.14.6) + sidekiq (3.2.5) + celluloid (= 0.15.2) + connection_pool (>= 2.0.0) + json + redis (>= 3.0.6) + redis-namespace (>= 1.3.1) + sinatra (1.4.5) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + sprockets (2.12.2) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-rails (3.0.0.beta1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (~> 2.8) + sqlite3 (1.3.9) + thor (0.19.1) + thread_safe (0.3.4) + tilt (1.4.1) + timers (1.1.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) + vegas (0.1.11) + rack (>= 1.0.0) + +PLATFORMS + ruby + +DEPENDENCIES + appraisal + bundler + delayed_job + delayed_job_active_record + delayed_paperclip! + mocha + rails (~> 4.2.0.beta2) + railties + rake + resque + rspec (< 3.0) + sidekiq + sqlite3 diff --git a/lib/delayed_paperclip.rb b/lib/delayed_paperclip.rb index 2c671b8..632c910 100644 --- a/lib/delayed_paperclip.rb +++ b/lib/delayed_paperclip.rb @@ -16,6 +16,7 @@ def options end def detect_background_task + return DelayedPaperclip::Jobs::ActiveJob if defined? ::ActiveJob::Base return DelayedPaperclip::Jobs::DelayedJob if defined? ::Delayed::Job return DelayedPaperclip::Jobs::Resque if defined? ::Resque return DelayedPaperclip::Jobs::Sidekiq if defined? ::Sidekiq diff --git a/lib/delayed_paperclip/jobs.rb b/lib/delayed_paperclip/jobs.rb index 74bf3f1..cf07d24 100644 --- a/lib/delayed_paperclip/jobs.rb +++ b/lib/delayed_paperclip/jobs.rb @@ -1,5 +1,6 @@ module DelayedPaperclip module Jobs + autoload :ActiveJob, 'delayed_paperclip/jobs/active_job' autoload :DelayedJob, 'delayed_paperclip/jobs/delayed_job' autoload :Resque, 'delayed_paperclip/jobs/resque' autoload :Sidekiq, 'delayed_paperclip/jobs/sidekiq' diff --git a/lib/delayed_paperclip/jobs/active_job.rb b/lib/delayed_paperclip/jobs/active_job.rb new file mode 100644 index 0000000..e4bcbb9 --- /dev/null +++ b/lib/delayed_paperclip/jobs/active_job.rb @@ -0,0 +1,16 @@ +module DelayedPaperclip + module Jobs + class ActiveJob < ActiveJob::Base + queue_as :paperclip + + def self.enqueue_delayed_paperclip(instance_klass, instance_id, attachment_name) + # ActiveJob currently does not support symbol arguments + self.perform_later(instance_klass, instance_id, attachment_name.to_s) + end + + def perform(instance_klass, instance_id, attachment_name) + DelayedPaperclip.process_job(instance_klass, instance_id, attachment_name.to_sym) + end + end + end +end \ No newline at end of file diff --git a/spec/integration/active_job_spec.rb b/spec/integration/active_job_spec.rb new file mode 100644 index 0000000..2b08ba5 --- /dev/null +++ b/spec/integration/active_job_spec.rb @@ -0,0 +1,25 @@ +require 'spec_helper' + +describe "ActiveJob inline" do + + before :all do + DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob + end + + let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) } + +if Rails.version.to_f >= 4.2 + describe "perform job" do + before :each do + DelayedPaperclip.options[:url_with_processing] = true + reset_dummy + end + + it "performs a job" do + dummy.image = File.open("#{ROOT}/spec/fixtures/12k.png") + Paperclip::Attachment.any_instance.expects(:reprocess!) + dummy.save! + end + end +end +end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 721fd52..8951e2b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -7,6 +7,10 @@ require 'active_support/core_ext' require 'rspec' require 'mocha/api' +begin + require 'active_job' +rescue LoadError +end begin require 'pry' From f2857ce0402eb0bd8766f2c4241654fb0e3d6ca5 Mon Sep 17 00:00:00 2001 From: katafrakt Date: Sat, 4 Oct 2014 19:39:13 +0200 Subject: [PATCH 2/3] integration tests for active job + few corrections for running test within rails 4.2 env (deprecation warnings) --- spec/integration/active_job_inline_spec.rb | 26 +++++++++++++++ spec/integration/active_job_resque_spec.rb | 31 ++++++++++++++++++ spec/integration/active_job_sidekiq_spec.rb | 35 +++++++++++++++++++++ spec/integration/active_job_spec.rb | 25 --------------- spec/integration/delayed_job_spec.rb | 2 +- spec/spec_helper.rb | 5 +++ test/test_helper.rb | 11 ++++++- 7 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 spec/integration/active_job_inline_spec.rb create mode 100644 spec/integration/active_job_resque_spec.rb create mode 100644 spec/integration/active_job_sidekiq_spec.rb delete mode 100644 spec/integration/active_job_spec.rb diff --git a/spec/integration/active_job_inline_spec.rb b/spec/integration/active_job_inline_spec.rb new file mode 100644 index 0000000..12a6343 --- /dev/null +++ b/spec/integration/active_job_inline_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe "ActiveJob inline" do + + if defined? ActiveJob + before :all do + DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob + ActiveJob::Base.logger = nil + end + + let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) } + + describe "perform job" do + before :each do + DelayedPaperclip.options[:url_with_processing] = true + reset_dummy + end + + it "performs a job" do + dummy.image = File.open("#{ROOT}/spec/fixtures/12k.png") + Paperclip::Attachment.any_instance.expects(:reprocess!) + dummy.save! + end + end + end +end \ No newline at end of file diff --git a/spec/integration/active_job_resque_spec.rb b/spec/integration/active_job_resque_spec.rb new file mode 100644 index 0000000..5a62f03 --- /dev/null +++ b/spec/integration/active_job_resque_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' +require 'resque' + +if defined? ActiveJob + describe "Active Job with Resque backend" do + + before :all do + DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob + ActiveJob::Base.logger = nil + ActiveJob::Base.queue_adapter = :resque + Resque.remove_queue(:paperclip) + end + + let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) } + + describe "integration tests" do + include_examples "base usage" + end + + def process_jobs + worker = Resque::Worker.new(:paperclip) + worker.process + end + + def jobs_count + + Resque.size(:paperclip) + end + + end +end \ No newline at end of file diff --git a/spec/integration/active_job_sidekiq_spec.rb b/spec/integration/active_job_sidekiq_spec.rb new file mode 100644 index 0000000..643756e --- /dev/null +++ b/spec/integration/active_job_sidekiq_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' +require 'sidekiq/api' + +describe "ActiveJob with Sidekiq backend" do + +if defined? ActiveJob + before :all do + DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob + ActiveJob::Base.logger = nil + ActiveJob::Base.queue_adapter = :sidekiq + end + + let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) } + + describe "integration tests" do + include_examples "base usage" + end +end + + def process_jobs + Sidekiq::Queue.new(:paperclip).each do |job| + worker = job.klass.constantize.new + args = job.args + begin + worker.perform(*args) + rescue # Assume sidekiq handle exception properly + end + job.delete + end + end + + def jobs_count + Sidekiq::Queue.new(:paperclip).size + end +end diff --git a/spec/integration/active_job_spec.rb b/spec/integration/active_job_spec.rb deleted file mode 100644 index 2b08ba5..0000000 --- a/spec/integration/active_job_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'spec_helper' - -describe "ActiveJob inline" do - - before :all do - DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob - end - - let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) } - -if Rails.version.to_f >= 4.2 - describe "perform job" do - before :each do - DelayedPaperclip.options[:url_with_processing] = true - reset_dummy - end - - it "performs a job" do - dummy.image = File.open("#{ROOT}/spec/fixtures/12k.png") - Paperclip::Attachment.any_instance.expects(:reprocess!) - dummy.save! - end - end -end -end \ No newline at end of file diff --git a/spec/integration/delayed_job_spec.rb b/spec/integration/delayed_job_spec.rb index 00cbd59..379f881 100644 --- a/spec/integration/delayed_job_spec.rb +++ b/spec/integration/delayed_job_spec.rb @@ -49,7 +49,7 @@ def build_delayed_jobs table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) table.string :locked_by # Who is working on this object (if locked) table.string :queue - table.timestamps + table.timestamps null: true end end end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8951e2b..c43222f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -24,6 +24,11 @@ require 'delayed_paperclip/railtie' DelayedPaperclip::Railtie.insert +# silence deprecation warnings in rails 4.2 +if ActiveRecord::Base.respond_to?(:raise_in_transactional_callbacks=) + ActiveRecord::Base.raise_in_transactional_callbacks = true +end + # Connect to sqlite ActiveRecord::Base.establish_connection( "adapter" => "sqlite3", diff --git a/test/test_helper.rb b/test/test_helper.rb index 226c5f9..f0bb116 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,5 +1,14 @@ require 'rubygems' -require 'test/unit' + +begin + require 'test/unit' +rescue + # we are probably Rails 4.2, so no Test::Unit here + # move along... + puts "No Test::Unit available. Skipping..." + exit(0) +end + require 'mocha/setup' require 'active_record' require 'active_record/version' From e1937b6bde3338a26f1cbc20d680ad1223575562 Mon Sep 17 00:00:00 2001 From: katafrakt Date: Mon, 6 Oct 2014 09:20:23 +0200 Subject: [PATCH 3/3] request sidekiq version compatible with ruby 1.9.3 in development --- delayed_paperclip.gemspec | 2 +- gemfiles/rails3_1.gemfile | 2 +- gemfiles/rails3_1.gemfile.lock | 2 +- gemfiles/rails3_2.gemfile | 2 +- gemfiles/rails3_2.gemfile.lock | 2 +- gemfiles/rails4.gemfile | 2 +- gemfiles/rails4.gemfile.lock | 2 +- gemfiles/rails4_2.gemfile.lock | 10 +++++----- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/delayed_paperclip.gemspec b/delayed_paperclip.gemspec index b58700c..b09ab73 100644 --- a/delayed_paperclip.gemspec +++ b/delayed_paperclip.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'delayed_job' s.add_development_dependency 'delayed_job_active_record' s.add_development_dependency 'resque' - s.add_development_dependency 'sidekiq' + s.add_development_dependency 'sidekiq', '< 3.0' s.add_development_dependency 'appraisal' s.add_development_dependency 'rake' s.add_development_dependency 'bundler' diff --git a/gemfiles/rails3_1.gemfile b/gemfiles/rails3_1.gemfile index 7b16842..bc75ec8 100644 --- a/gemfiles/rails3_1.gemfile +++ b/gemfiles/rails3_1.gemfile @@ -4,4 +4,4 @@ source "http://rubygems.org" gem "rails", "~> 3.1.12" -gemspec :path=>"../" \ No newline at end of file +gemspec :path => "../" diff --git a/gemfiles/rails3_1.gemfile.lock b/gemfiles/rails3_1.gemfile.lock index 8abf78a..3f32b24 100644 --- a/gemfiles/rails3_1.gemfile.lock +++ b/gemfiles/rails3_1.gemfile.lock @@ -159,5 +159,5 @@ DEPENDENCIES rake resque rspec (< 3.0) - sidekiq + sidekiq (< 3.0) sqlite3 diff --git a/gemfiles/rails3_2.gemfile b/gemfiles/rails3_2.gemfile index bbda76e..93f1c85 100644 --- a/gemfiles/rails3_2.gemfile +++ b/gemfiles/rails3_2.gemfile @@ -4,4 +4,4 @@ source "http://rubygems.org" gem "rails", "~> 3.2.17" -gemspec :path=>"../" \ No newline at end of file +gemspec :path => "../" diff --git a/gemfiles/rails3_2.gemfile.lock b/gemfiles/rails3_2.gemfile.lock index b89a563..7ce4a9a 100644 --- a/gemfiles/rails3_2.gemfile.lock +++ b/gemfiles/rails3_2.gemfile.lock @@ -157,5 +157,5 @@ DEPENDENCIES rake resque rspec (< 3.0) - sidekiq + sidekiq (< 3.0) sqlite3 diff --git a/gemfiles/rails4.gemfile b/gemfiles/rails4.gemfile index dc69070..bbab36a 100644 --- a/gemfiles/rails4.gemfile +++ b/gemfiles/rails4.gemfile @@ -4,4 +4,4 @@ source "http://rubygems.org" gem "rails", "~> 4.0.3" -gemspec :path=>"../" \ No newline at end of file +gemspec :path => "../" diff --git a/gemfiles/rails4.gemfile.lock b/gemfiles/rails4.gemfile.lock index f8cb230..a0cde01 100644 --- a/gemfiles/rails4.gemfile.lock +++ b/gemfiles/rails4.gemfile.lock @@ -153,5 +153,5 @@ DEPENDENCIES rake resque rspec (< 3.0) - sidekiq + sidekiq (< 3.0) sqlite3 diff --git a/gemfiles/rails4_2.gemfile.lock b/gemfiles/rails4_2.gemfile.lock index 7ba663f..cb21051 100644 --- a/gemfiles/rails4_2.gemfile.lock +++ b/gemfiles/rails4_2.gemfile.lock @@ -133,12 +133,12 @@ GEM rspec-expectations (2.14.5) diff-lcs (>= 1.1.3, < 2.0) rspec-mocks (2.14.6) - sidekiq (3.2.5) + sidekiq (2.17.8) celluloid (= 0.15.2) - connection_pool (>= 2.0.0) + connection_pool (~> 2.0) json - redis (>= 3.0.6) - redis-namespace (>= 1.3.1) + redis (~> 3.1) + redis-namespace (~> 1.3) sinatra (1.4.5) rack (~> 1.4) rack-protection (~> 1.4) @@ -177,5 +177,5 @@ DEPENDENCIES rake resque rspec (< 3.0) - sidekiq + sidekiq (< 3.0) sqlite3