diff --git a/.travis.yml b/.travis.yml index 47d00e916..0836d2053 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,26 @@ rvm: - 2.1 - - 2.2 + - 2.2.2 script: "bundle exec rake clean spec cucumber" gemfile: - - gemfiles/4.2.awsv2.1.gemfile - gemfiles/4.2.awsv2.0.gemfile + - gemfiles/4.2.awsv2.1.gemfile + - gemfiles/5.0.awsv2.0.gemfile + - gemfiles/5.0.awsv2.1.gemfile + +matrix: + fast_finish: true + exclude: + - gemfile: gemfiles/5.0.awsv2.0.gemfile + rvm: 2.0 + - gemfile: gemfiles/5.0.awsv2.1.gemfile + rvm: 2.0 + - gemfile: gemfiles/5.0.awsv2.0.gemfile + rvm: 2.1 + - gemfile: gemfiles/5.0.awsv2.1.gemfile + rvm: 2.1 sudo: false cache: bundler diff --git a/Appraisals b/Appraisals index 0570b5899..a3172e6d1 100644 --- a/Appraisals +++ b/Appraisals @@ -1,3 +1,8 @@ +appraise "4.2.awsv2.0" do + gem "rails", "~> 4.2.0" + gem "aws-sdk", "~> 2.0.0" +end + appraise "4.2.awsv2.1" do gem "rails", "~> 4.2.0" gem "aws-sdk", "~> 2.1.0" @@ -7,11 +12,16 @@ appraise "4.2.awsv2.1" do end end -appraise "4.2.awsv2.0" do - gem "rails", "~> 4.2.0" +appraise "5.0.awsv2.0" do + gem "rails", "5.0.0.beta3" gem "aws-sdk", "~> 2.0.0" group :development, :test do gem 'mime-types', '>= 1.16', '< 4' end end + +appraise "5.0.awsv2.1" do + gem "rails", "5.0.0.beta3" + gem "aws-sdk", "~> 2.1.0" +end diff --git a/README.md b/README.md index d66b6f64f..4a6b67186 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,13 @@ Paperclip ========= +## Documentation valid for `master` branch + +Please check the documentation for the paperclip version you are using: +https://github.com/thoughtbot/paperclip/releases + +--- + [![Build Status](https://secure.travis-ci.org/thoughtbot/paperclip.svg?branch=master)](http://travis-ci.org/thoughtbot/paperclip) [![Dependency Status](https://gemnasium.com/thoughtbot/paperclip.svg?travis)](https://gemnasium.com/thoughtbot/paperclip) [![Code Climate](https://codeclimate.com/github/thoughtbot/paperclip.svg)](https://codeclimate.com/github/thoughtbot/paperclip) @@ -71,9 +78,8 @@ Requirements ### Ruby and Rails -Paperclip now requires Ruby version **>= 2.0.0** and Rails version **3.2, >= 4.1** (Only if you're going to use Paperclip with Ruby on Rails.) - -If you're still on Ruby 1.8.7 or Ruby on Rails 2.3.x, you can still use Paperclip 2.7.x with your project. Also, everything in this README might not apply to your version of Paperclip, and you should read [the README for version 2.7](http://www.rubydoc.info/gems/paperclip/2.7.0) instead. +Paperclip now requires Ruby version **>= 2.1** and Rails version **>= 4.2** +(only if you're going to use Paperclip with Ruby on Rails.) ### Image Processor @@ -100,7 +106,7 @@ to install GhostScript. On Mac OS X, you can also install that using Homebrew: brew install gs -If you're on Ubuntu (or any Debian base Linux distribution), you'll want to run +If you are on Ubuntu (or any Debian base Linux distribution), you'll want to run the following with apt-get: sudo apt-get install imagemagick -y @@ -153,7 +159,7 @@ Paperclip is distributed as a gem, which is how it should be used in your app. Include the gem in your Gemfile: ```ruby -gem "paperclip", "~> 4.3" +gem "paperclip", "~> 5.0" ``` Or, if you want to get the latest, you can get master from the main paperclip repository: diff --git a/gemfiles/4.2.awsv2.0.gemfile b/gemfiles/4.2.awsv2.0.gemfile index ef705dfd6..83ffed5d9 100644 --- a/gemfiles/4.2.awsv2.0.gemfile +++ b/gemfiles/4.2.awsv2.0.gemfile @@ -2,16 +2,16 @@ source "https://rubygems.org" -gem "sqlite3", "~> 1.3.8", platforms: :ruby +gem "sqlite3", "~> 1.3.8", :platforms => :ruby gem "pry" gem "rails", "~> 4.2.0" gem "aws-sdk", "~> 2.0.0" group :development, :test do gem "activerecord-import" - gem "mime-types", ">= 1.16", "< 4" + gem "mime-types" gem "builder" gem "rubocop", :require => false end -gemspec path: "../" +gemspec :path => "../" diff --git a/gemfiles/4.2.awsv2.1.gemfile b/gemfiles/4.2.awsv2.1.gemfile index 9b52119cf..b6b17d272 100644 --- a/gemfiles/4.2.awsv2.1.gemfile +++ b/gemfiles/4.2.awsv2.1.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "sqlite3", "~> 1.3.8", platforms: :ruby +gem "sqlite3", "~> 1.3.8", :platforms => :ruby gem "pry" gem "rails", "~> 4.2.0" gem "aws-sdk", "~> 2.1.0" @@ -14,4 +14,4 @@ group :development, :test do gem "rubocop", :require => false end -gemspec path: "../" +gemspec :path => "../" diff --git a/gemfiles/4.2.awsv2.gemfile b/gemfiles/4.2.awsv2.gemfile new file mode 100644 index 000000000..3ac60abcd --- /dev/null +++ b/gemfiles/4.2.awsv2.gemfile @@ -0,0 +1,20 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "sqlite3", "~> 1.3.8", :platforms => :ruby +gem "jruby-openssl", :platforms => :jruby +gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby +gem "rubysl", :platforms => :rbx +gem "racc", :platforms => :rbx +gem "pry" +gem "rails", "~> 4.2.0" +gem "aws-sdk", "~> 2.0" + +group :development, :test do + gem "mime-types", "~> 1.16" + gem "builder" + gem "rubocop", :require => false +end + +gemspec :path => "../" diff --git a/gemfiles/5.0.awsv2.0.gemfile b/gemfiles/5.0.awsv2.0.gemfile new file mode 100644 index 000000000..4fd23dc14 --- /dev/null +++ b/gemfiles/5.0.awsv2.0.gemfile @@ -0,0 +1,17 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "sqlite3", "~> 1.3.8", :platforms => :ruby +gem "pry" +gem "rails", "5.0.0.beta3" +gem "aws-sdk", "~> 2.0.0" + +group :development, :test do + gem "activerecord-import" + gem "mime-types", ">= 1.16", "< 4" + gem "builder" + gem "rubocop", :require => false +end + +gemspec :path => "../" diff --git a/gemfiles/5.0.awsv2.1.gemfile b/gemfiles/5.0.awsv2.1.gemfile new file mode 100644 index 000000000..75049f705 --- /dev/null +++ b/gemfiles/5.0.awsv2.1.gemfile @@ -0,0 +1,17 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "sqlite3", "~> 1.3.8", :platforms => :ruby +gem "pry" +gem "rails", "5.0.0.beta3" +gem "aws-sdk", "~> 2.1.0" + +group :development, :test do + gem "activerecord-import" + gem "mime-types" + gem "builder" + gem "rubocop", :require => false +end + +gemspec :path => "../" diff --git a/gemfiles/5.0.awsv2.gemfile b/gemfiles/5.0.awsv2.gemfile new file mode 100644 index 000000000..29c4b6020 --- /dev/null +++ b/gemfiles/5.0.awsv2.gemfile @@ -0,0 +1,25 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "sqlite3", "~> 1.3.8", :platforms => :ruby +gem "jruby-openssl", :platforms => :jruby +gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby +gem "rubysl", :platforms => :rbx +gem "racc", :platforms => :rbx +gem "pry" +gem "rails", :github => "rails/rails" +gem "sprockets-rails", :github => "rails/sprockets-rails" +gem "sprockets", :github => "rails/sprockets" +gem "sass-rails", :github => "rails/sass-rails" +gem "arel", :github => "rails/arel" +gem "rack", :github => "rack/rack" +gem "aws-sdk", "~> 2.0" + +group :development, :test do + gem "mime-types", "~> 1.16" + gem "builder" + gem "rubocop", :require => false +end + +gemspec :path => "../" diff --git a/lib/paperclip/attachment.rb b/lib/paperclip/attachment.rb index ae8bb27ea..d3e81a0cd 100644 --- a/lib/paperclip/attachment.rb +++ b/lib/paperclip/attachment.rb @@ -501,7 +501,7 @@ def post_process(*style_args) #:nodoc: instance.run_paperclip_callbacks(:post_process) do instance.run_paperclip_callbacks(:"#{name}_post_process") do - unless @options[:check_validity_before_processing] && instance.errors.any? + if !@options[:check_validity_before_processing] || !instance.errors.any? post_process_styles(*style_args) end end diff --git a/lib/paperclip/callbacks.rb b/lib/paperclip/callbacks.rb index e3525f6d0..53a436857 100644 --- a/lib/paperclip/callbacks.rb +++ b/lib/paperclip/callbacks.rb @@ -7,7 +7,7 @@ def self.included(base) module Defining def define_paperclip_callbacks(*callbacks) - define_callbacks(*[callbacks, {:terminator => callback_terminator}].flatten) + define_callbacks(*[callbacks, { terminator: hasta_la_vista_baby }].flatten) callbacks.each do |callback| eval <<-end_callbacks def before_#{callback}(*args, &blk) @@ -22,11 +22,13 @@ def after_#{callback}(*args, &blk) private - def callback_terminator - if ::ActiveSupport::VERSION::STRING >= '4.1' - lambda { |target, result| result == false } - else - 'result == false' + def hasta_la_vista_baby + lambda do |_, result| + if result.respond_to?(:call) + result.call == false + else + result == false + end end end end diff --git a/spec/paperclip/validators_spec.rb b/spec/paperclip/validators_spec.rb index 398948d83..93a57e26b 100644 --- a/spec/paperclip/validators_spec.rb +++ b/spec/paperclip/validators_spec.rb @@ -64,12 +64,11 @@ assert_raises(RuntimeError){ dummy.valid? } end - it 'allows you to attach a file that does not violates these validations' do + it 'allows you to attach a file that does not violate these validations' do dummy = Dummy.new(avatar: File.new(fixture_file('rotated.jpg'))) - expect(dummy.errors.keys).to match_array [] + expect(dummy.errors.full_messages).to be_empty assert dummy.valid? end - end context "using the helper with a conditional" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 036770123..92e7f431f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -36,6 +36,7 @@ config.include Assertions config.include ModelReconstruction config.include TestData + config.include Reporting config.extend VersionHelper config.mock_framework = :mocha config.before(:all) do diff --git a/spec/support/model_reconstruction.rb b/spec/support/model_reconstruction.rb index 0caac56cc..a2e9b4461 100644 --- a/spec/support/model_reconstruction.rb +++ b/spec/support/model_reconstruction.rb @@ -10,7 +10,15 @@ def reset_class class_name klass.reset_column_information klass.connection_pool.clear_table_cache!(klass.table_name) if klass.connection_pool.respond_to?(:clear_table_cache!) - klass.connection.schema_cache.clear_table_cache!(klass.table_name) if klass.connection.respond_to?(:schema_cache) + + if klass.connection.respond_to?(:schema_cache) + if ActiveRecord::VERSION::STRING >= "5.0" + klass.connection.schema_cache.clear_data_source_cache!(klass.table_name) + else + klass.connection.schema_cache.clear_table_cache!(klass.table_name) + end + end + klass end diff --git a/spec/support/reporting.rb b/spec/support/reporting.rb new file mode 100644 index 000000000..ed970d2bb --- /dev/null +++ b/spec/support/reporting.rb @@ -0,0 +1,11 @@ +module Reporting + def silence_stream(stream) + old_stream = stream.dup + stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null') + stream.sync = true + yield + ensure + stream.reopen(old_stream) + old_stream.close + end +end