From bda1c00408cd353cf96ebd24f7e36f17ccc4e8b0 Mon Sep 17 00:00:00 2001 From: Takuya Tsuchida Date: Sat, 15 Aug 2015 12:34:35 +0900 Subject: [PATCH 1/2] Add refile support --- Gemfile | 3 +++ gemfiles/rails_4.0.gemfile | 3 +++ gemfiles/rails_4.1.gemfile | 3 +++ gemfiles/rails_4.2.gemfile | 3 +++ lib/rails_admin/config/fields.rb | 1 + .../config/fields/factories/refile.rb | 25 +++++++++++++++++ lib/rails_admin/config/fields/types/all.rb | 1 + lib/rails_admin/config/fields/types/refile.rb | 27 +++++++++++++++++++ .../rails_admin/main_controller_spec.rb | 5 ++++ spec/dummy_app/Gemfile | 3 +++ .../dummy_app/app/active_record/field_test.rb | 1 + spec/dummy_app/app/mongoid/field_test.rb | 5 ++++ ...0150815102450_add_refile_to_field_tests.rb | 8 ++++++ spec/rails_admin/config/fields/base_spec.rb | 15 +++++++++++ .../config/fields/types/file_upload_spec.rb | 2 ++ 15 files changed, 105 insertions(+) create mode 100644 lib/rails_admin/config/fields/factories/refile.rb create mode 100644 lib/rails_admin/config/fields/types/refile.rb create mode 100644 spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb diff --git a/Gemfile b/Gemfile index a10d800673..991d8abe47 100644 --- a/Gemfile +++ b/Gemfile @@ -47,6 +47,9 @@ group :test do gem 'paperclip', ['>= 3.4', '!= 4.3.0'] gem 'poltergeist', '~> 1.5' gem 'rack-cache', require: 'rack/cache' + gem 'refile', '>= 0.5.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' + gem 'refile-mongoid', '>= 0.0.1' gem 'rspec-rails', '>= 2.14' gem 'rubocop', '~> 0.31.0' gem 'simplecov', '>= 0.9', require: false diff --git a/gemfiles/rails_4.0.gemfile b/gemfiles/rails_4.0.gemfile index 91d602ccad..0759a9f598 100644 --- a/gemfiles/rails_4.0.gemfile +++ b/gemfiles/rails_4.0.gemfile @@ -51,6 +51,9 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" + gem 'refile', '>= 0.5.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' + gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false diff --git a/gemfiles/rails_4.1.gemfile b/gemfiles/rails_4.1.gemfile index b765b2362e..442a4287df 100644 --- a/gemfiles/rails_4.1.gemfile +++ b/gemfiles/rails_4.1.gemfile @@ -50,6 +50,9 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" + gem 'refile', '>= 0.5.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' + gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false diff --git a/gemfiles/rails_4.2.gemfile b/gemfiles/rails_4.2.gemfile index f8f9563a8e..27c3e23734 100644 --- a/gemfiles/rails_4.2.gemfile +++ b/gemfiles/rails_4.2.gemfile @@ -51,6 +51,9 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" + gem 'refile', '>= 0.5.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' + gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false diff --git a/lib/rails_admin/config/fields.rb b/lib/rails_admin/config/fields.rb index 1efb4d34f5..33e84a2a2d 100644 --- a/lib/rails_admin/config/fields.rb +++ b/lib/rails_admin/config/fields.rb @@ -82,4 +82,5 @@ def self.register_factory(&block) require 'rails_admin/config/fields/factories/paperclip' require 'rails_admin/config/fields/factories/dragonfly' require 'rails_admin/config/fields/factories/carrierwave' +require 'rails_admin/config/fields/factories/refile' require 'rails_admin/config/fields/factories/association' diff --git a/lib/rails_admin/config/fields/factories/refile.rb b/lib/rails_admin/config/fields/factories/refile.rb new file mode 100644 index 0000000000..c669250bb5 --- /dev/null +++ b/lib/rails_admin/config/fields/factories/refile.rb @@ -0,0 +1,25 @@ +require 'rails_admin/config/fields' +require 'rails_admin/config/fields/types' +require 'rails_admin/config/fields/types/file_upload' + +RailsAdmin::Config::Fields.register_factory do |parent, properties, fields| + extensions = [:id, :filename, :size, :content_type] + model = parent.abstract_model.model + if (properties.name.to_s =~ /^(.+)_id$/) && defined?(::Refile) && model.ancestors.map(&:to_s).include?("Refile::Attachment(#{attachment_name = Regexp.last_match[1].to_sym})") + field = RailsAdmin::Config::Fields::Types.load(:refile).new(parent, attachment_name, properties) + children_fields = [] + extensions.each do |ext| + children_column_name = "#{attachment_name}_#{ext}".to_sym + next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s } + children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields) + children_field.hide + children_field.filterable(false) + children_fields << children_field.name + end + field.children_fields(children_fields) + fields << field + true + else + false + end +end diff --git a/lib/rails_admin/config/fields/types/all.rb b/lib/rails_admin/config/fields/types/all.rb index 9ca0e19293..920b57c46f 100644 --- a/lib/rails_admin/config/fields/types/all.rb +++ b/lib/rails_admin/config/fields/types/all.rb @@ -9,6 +9,7 @@ require 'rails_admin/config/fields/types/file_upload' require 'rails_admin/config/fields/types/paperclip' require 'rails_admin/config/fields/types/carrierwave' +require 'rails_admin/config/fields/types/refile' require 'rails_admin/config/fields/types/float' require 'rails_admin/config/fields/types/has_and_belongs_to_many_association' require 'rails_admin/config/fields/types/has_many_association' diff --git a/lib/rails_admin/config/fields/types/refile.rb b/lib/rails_admin/config/fields/types/refile.rb new file mode 100644 index 0000000000..82548eab52 --- /dev/null +++ b/lib/rails_admin/config/fields/types/refile.rb @@ -0,0 +1,27 @@ +require 'rails_admin/config/fields/base' +require 'rails_admin/config/fields/types/file_upload' + +module RailsAdmin + module Config + module Fields + module Types + class Refile < RailsAdmin::Config::Fields::Types::FileUpload + RailsAdmin::Config::Fields::Types.register(self) + + register_instance_option :thumb_method do + [:limit, 100, 100] + end + + register_instance_option :delete_method do + "remove_#{name}" + end + + def resource_url(thumb = []) + return nil unless value + Object.const_get(:Refile).attachment_url(bindings[:object], name, *thumb) + end + end + end + end + end +end diff --git a/spec/controllers/rails_admin/main_controller_spec.rb b/spec/controllers/rails_admin/main_controller_spec.rb index dd9c046938..445d2f2a27 100644 --- a/spec/controllers/rails_admin/main_controller_spec.rb +++ b/spec/controllers/rails_admin/main_controller_spec.rb @@ -325,6 +325,7 @@ class TeamWithNumberedPlayers < Team field :paperclip_asset do delete_method :delete_paperclip_asset end + field :refile_asset end controller.params = HashWithIndifferentAccess.new( 'field_test' => { @@ -336,6 +337,8 @@ class TeamWithNumberedPlayers < Team 'retained_dragonfly_asset' => 'test', 'paperclip_asset' => 'test', 'delete_paperclip_asset' => 'test', + 'refile_asset' => 'test', + 'remove_refile_asset' => 'test', 'should_not_be_here' => 'test', }, ) @@ -351,6 +354,8 @@ class TeamWithNumberedPlayers < Team 'retained_dragonfly_asset' => 'test', 'paperclip_asset' => 'test', 'delete_paperclip_asset' => 'test', + 'refile_asset' => 'test', + 'remove_refile_asset' => 'test', }) end diff --git a/spec/dummy_app/Gemfile b/spec/dummy_app/Gemfile index e3063b72f4..5e069ddc6a 100644 --- a/spec/dummy_app/Gemfile +++ b/spec/dummy_app/Gemfile @@ -45,6 +45,9 @@ gem 'mini_magick', '>= 3.4' gem 'mlb', '>= 0.7' gem 'paperclip', '>= 3.4' gem 'rails_admin', path: '../../' +gem 'refile', '>= 0.5.5', require: 'refile/rails' +gem 'refile-mini_magick', '>= 0.1.0' +gem 'refile-mongoid', '>= 0.0.1' # Gems used only for assets and not required # in production environments by default. diff --git a/spec/dummy_app/app/active_record/field_test.rb b/spec/dummy_app/app/active_record/field_test.rb index 4e7030c15f..2a282af435 100644 --- a/spec/dummy_app/app/active_record/field_test.rb +++ b/spec/dummy_app/app/active_record/field_test.rb @@ -11,4 +11,5 @@ class FieldTest < ActiveRecord::Base dragonfly_accessor :dragonfly_asset mount_uploader :carrierwave_asset, CarrierwaveUploader + attachment :refile_asset end diff --git a/spec/dummy_app/app/mongoid/field_test.rb b/spec/dummy_app/app/mongoid/field_test.rb index 7ebb4e1779..d0c63b1313 100644 --- a/spec/dummy_app/app/mongoid/field_test.rb +++ b/spec/dummy_app/app/mongoid/field_test.rb @@ -3,6 +3,7 @@ class FieldTest include Mongoid::Paperclip include ActiveModel::ForbiddenAttributesProtection extend Dragonfly::Model + extend Refile::Mongoid::Attachment field :name, type: String field :title, type: String @@ -50,6 +51,10 @@ class FieldTest field :dragonfly_asset_uid dragonfly_accessor :dragonfly_asset mount_uploader :carrierwave_asset, CarrierwaveUploader + field :refile_asset_filename + field :refile_asset_size + field :refile_asset_content_type + attachment :refile_asset validates :short_text, length: {maximum: 255} end diff --git a/spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb b/spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb new file mode 100644 index 0000000000..cdbc60c28c --- /dev/null +++ b/spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb @@ -0,0 +1,8 @@ +class AddRefileToFieldTests < ActiveRecord::Migration + def change + add_column :field_tests, :refile_asset_id, :string + add_column :field_tests, :refile_asset_filename, :string + add_column :field_tests, :refile_asset_size, :string + add_column :field_tests, :refile_asset_content_type, :string + end +end diff --git a/spec/rails_admin/config/fields/base_spec.rb b/spec/rails_admin/config/fields/base_spec.rb index 5d0b09a169..d247cb404b 100644 --- a/spec/rails_admin/config/fields/base_spec.rb +++ b/spec/rails_admin/config/fields/base_spec.rb @@ -91,6 +91,12 @@ class CommentReversed < Tableless expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.hidden?).to be_falsey end end + + context 'of a Refile installation' do + it 'is a _id field' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.children_fields).to eq([:refile_asset_id, :refile_asset_filename, :refile_asset_size, :refile_asset_content_type]) + end + end end describe '#form_default_value' do @@ -257,6 +263,10 @@ class CommentReversed < Tableless it 'of carrierwave should find the underlying column on the base table' do expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.carrierwave_asset']) end + + it 'of refile should find the underlying column on the base table' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.refile_asset_id']) + end end end @@ -288,6 +298,11 @@ class CommentReversed < Tableless expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.searchable).to eq(:carrierwave_asset) expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.sortable).to eq(:carrierwave_asset) end + + it 'of refile should target the first children field' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable).to eq(:refile_asset_id) + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.sortable).to eq(:refile_asset_id) + end end end diff --git a/spec/rails_admin/config/fields/types/file_upload_spec.rb b/spec/rails_admin/config/fields/types/file_upload_spec.rb index 2efdce9d2d..6caff94099 100644 --- a/spec/rails_admin/config/fields/types/file_upload_spec.rb +++ b/spec/rails_admin/config/fields/types/file_upload_spec.rb @@ -12,11 +12,13 @@ field :paperclip_asset do delete_method :delete_paperclip_asset end + field :refile_asset end end expect(RailsAdmin.config(FieldTest).field(:carrierwave_asset).allowed_methods.collect(&:to_s)).to eq %w(carrierwave_asset remove_carrierwave_asset carrierwave_asset_cache) expect(RailsAdmin.config(FieldTest).field(:dragonfly_asset).allowed_methods.collect(&:to_s)).to eq %w(dragonfly_asset remove_dragonfly_asset retained_dragonfly_asset) expect(RailsAdmin.config(FieldTest).field(:paperclip_asset).allowed_methods.collect(&:to_s)).to eq %w(paperclip_asset delete_paperclip_asset) + expect(RailsAdmin.config(FieldTest).field(:refile_asset).allowed_methods.collect(&:to_s)).to eq %w(refile_asset remove_refile_asset) end end From 0cb8001393183c0e590194f686bc1beccfd56413 Mon Sep 17 00:00:00 2001 From: Takuya Tsuchida Date: Tue, 18 Aug 2015 22:10:03 +0900 Subject: [PATCH 2/2] Fix build failures --- Gemfile | 10 ++++++--- gemfiles/rails_4.0.gemfile | 11 +++++++--- gemfiles/rails_4.1.gemfile | 11 +++++++--- gemfiles/rails_4.2.gemfile | 10 ++++++--- lib/rails_admin/config/fields.rb | 2 +- lib/rails_admin/config/fields/types/all.rb | 2 +- .../rails_admin/main_controller_spec.rb | 10 +++------ spec/dummy_app/Gemfile | 10 ++++++--- .../dummy_app/app/active_record/field_test.rb | 3 ++- spec/dummy_app/app/mongoid/field_test.rb | 14 +++++++----- spec/rails_admin/config/fields/base_spec.rb | 22 ++++++++++++------- .../config/fields/types/file_upload_spec.rb | 2 +- 12 files changed, 68 insertions(+), 39 deletions(-) diff --git a/Gemfile b/Gemfile index 991d8abe47..c9cce1e266 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,8 @@ group :mongoid do gem 'mongoid', '~> 4.0.0' gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip' gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid' + + gem 'refile-mongoid', '>= 0.0.1' if RUBY_VERSION >= '2.1.0' end group :active_record do @@ -47,13 +49,15 @@ group :test do gem 'paperclip', ['>= 3.4', '!= 4.3.0'] gem 'poltergeist', '~> 1.5' gem 'rack-cache', require: 'rack/cache' - gem 'refile', '>= 0.5.5', require: 'refile/rails' - gem 'refile-mini_magick', '>= 0.1.0' - gem 'refile-mongoid', '>= 0.0.1' gem 'rspec-rails', '>= 2.14' gem 'rubocop', '~> 0.31.0' gem 'simplecov', '>= 0.9', require: false gem 'timecop', '>= 0.5' + + if RUBY_VERSION >= '2.1.0' + gem 'refile', '~> 0.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' + end end gemspec diff --git a/gemfiles/rails_4.0.gemfile b/gemfiles/rails_4.0.gemfile index 0759a9f598..bef2e484bd 100644 --- a/gemfiles/rails_4.0.gemfile +++ b/gemfiles/rails_4.0.gemfile @@ -5,12 +5,15 @@ source "https://rubygems.org" gem "appraisal", ">= 2.0" gem "devise", ">= 3.2" gem "rails", "~> 4.0.0" +gem "sass-rails", "~> 5.0" gem "test-unit" group :mongoid do gem "mongoid", "~> 4.0.0" gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip" gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid" + + gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0" end group :active_record do @@ -51,13 +54,15 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" - gem 'refile', '>= 0.5.5', require: 'refile/rails' - gem 'refile-mini_magick', '>= 0.1.0' - gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false gem "timecop", ">= 0.5" + + if RUBY_VERSION >= "2.1.0" + gem "refile", "~> 0.5", :require => "refile/rails" + gem "refile-mini_magick", ">= 0.1.0" + end end gemspec :path => "../" diff --git a/gemfiles/rails_4.1.gemfile b/gemfiles/rails_4.1.gemfile index 442a4287df..a0b2847eb6 100644 --- a/gemfiles/rails_4.1.gemfile +++ b/gemfiles/rails_4.1.gemfile @@ -5,11 +5,14 @@ source "https://rubygems.org" gem "appraisal", ">= 2.0" gem "devise", ">= 3.2" gem "rails", "~> 4.1.0" +gem "sass-rails", "~> 5.0" group :mongoid do gem "mongoid", "~> 4.0.0" gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip" gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid" + + gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0" end group :active_record do @@ -50,13 +53,15 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" - gem 'refile', '>= 0.5.5', require: 'refile/rails' - gem 'refile-mini_magick', '>= 0.1.0' - gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false gem "timecop", ">= 0.5" + + if RUBY_VERSION >= "2.1.0" + gem "refile", "~> 0.5", :require => "refile/rails" + gem "refile-mini_magick", ">= 0.1.0" + end end gemspec :path => "../" diff --git a/gemfiles/rails_4.2.gemfile b/gemfiles/rails_4.2.gemfile index 27c3e23734..8e330fba4b 100644 --- a/gemfiles/rails_4.2.gemfile +++ b/gemfiles/rails_4.2.gemfile @@ -11,6 +11,8 @@ group :mongoid do gem "mongoid", "~> 4.0.0" gem "mongoid-paperclip", ">= 0.0.8", :require => "mongoid_paperclip" gem "carrierwave-mongoid", ">= 0.6.3", :require => "carrierwave/mongoid" + + gem "refile-mongoid", ">= 0.0.1" if RUBY_VERSION >= "2.1.0" end group :active_record do @@ -51,13 +53,15 @@ group :test do gem "paperclip", [">= 3.4", "!= 4.3.0"] gem "poltergeist", "~> 1.5" gem "rack-cache", :require => "rack/cache" - gem 'refile', '>= 0.5.5', require: 'refile/rails' - gem 'refile-mini_magick', '>= 0.1.0' - gem 'refile-mongoid', '>= 0.0.1' gem "rspec-rails", ">= 2.14" gem "rubocop", "~> 0.31.0" gem "simplecov", ">= 0.9", :require => false gem "timecop", ">= 0.5" + + if RUBY_VERSION >= "2.1.0" + gem "refile", "~> 0.5", :require => "refile/rails" + gem "refile-mini_magick", ">= 0.1.0" + end end gemspec :path => "../" diff --git a/lib/rails_admin/config/fields.rb b/lib/rails_admin/config/fields.rb index 33e84a2a2d..b3b6e4a73f 100644 --- a/lib/rails_admin/config/fields.rb +++ b/lib/rails_admin/config/fields.rb @@ -82,5 +82,5 @@ def self.register_factory(&block) require 'rails_admin/config/fields/factories/paperclip' require 'rails_admin/config/fields/factories/dragonfly' require 'rails_admin/config/fields/factories/carrierwave' -require 'rails_admin/config/fields/factories/refile' +require 'rails_admin/config/fields/factories/refile' if RUBY_VERSION >= '2.1.0' require 'rails_admin/config/fields/factories/association' diff --git a/lib/rails_admin/config/fields/types/all.rb b/lib/rails_admin/config/fields/types/all.rb index 920b57c46f..57ae785c79 100644 --- a/lib/rails_admin/config/fields/types/all.rb +++ b/lib/rails_admin/config/fields/types/all.rb @@ -9,7 +9,7 @@ require 'rails_admin/config/fields/types/file_upload' require 'rails_admin/config/fields/types/paperclip' require 'rails_admin/config/fields/types/carrierwave' -require 'rails_admin/config/fields/types/refile' +require 'rails_admin/config/fields/types/refile' if RUBY_VERSION >= '2.1.0' require 'rails_admin/config/fields/types/float' require 'rails_admin/config/fields/types/has_and_belongs_to_many_association' require 'rails_admin/config/fields/types/has_many_association' diff --git a/spec/controllers/rails_admin/main_controller_spec.rb b/spec/controllers/rails_admin/main_controller_spec.rb index 445d2f2a27..b0610fa823 100644 --- a/spec/controllers/rails_admin/main_controller_spec.rb +++ b/spec/controllers/rails_admin/main_controller_spec.rb @@ -325,7 +325,7 @@ class TeamWithNumberedPlayers < Team field :paperclip_asset do delete_method :delete_paperclip_asset end - field :refile_asset + field :refile_asset if RUBY_VERSION >= '2.1.0' end controller.params = HashWithIndifferentAccess.new( 'field_test' => { @@ -337,10 +337,8 @@ class TeamWithNumberedPlayers < Team 'retained_dragonfly_asset' => 'test', 'paperclip_asset' => 'test', 'delete_paperclip_asset' => 'test', - 'refile_asset' => 'test', - 'remove_refile_asset' => 'test', 'should_not_be_here' => 'test', - }, + }.merge(RUBY_VERSION >= '2.1.0' ? {'refile_asset' => 'test', 'remove_refile_asset' => 'test'} : {}), ) controller.send(:sanitize_params_for!, :create, RailsAdmin.config(FieldTest), controller.params['field_test']) @@ -354,9 +352,7 @@ class TeamWithNumberedPlayers < Team 'retained_dragonfly_asset' => 'test', 'paperclip_asset' => 'test', 'delete_paperclip_asset' => 'test', - 'refile_asset' => 'test', - 'remove_refile_asset' => 'test', - }) + }.merge(RUBY_VERSION >= '2.1.0' ? {'refile_asset' => 'test', 'remove_refile_asset' => 'test'} : {})) end it 'allows for polymorphic associations parameters' do diff --git a/spec/dummy_app/Gemfile b/spec/dummy_app/Gemfile index 5e069ddc6a..1a7111e3ff 100644 --- a/spec/dummy_app/Gemfile +++ b/spec/dummy_app/Gemfile @@ -36,6 +36,8 @@ group :mongoid do gem 'mongoid', '~> 4.0.0.beta1' gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip' gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid' + + gem 'refile-mongoid', '>= 0.0.1' if RUBY_VERSION >= '2.1.0' end gem 'carrierwave', '>= 0.8' @@ -45,9 +47,11 @@ gem 'mini_magick', '>= 3.4' gem 'mlb', '>= 0.7' gem 'paperclip', '>= 3.4' gem 'rails_admin', path: '../../' -gem 'refile', '>= 0.5.5', require: 'refile/rails' -gem 'refile-mini_magick', '>= 0.1.0' -gem 'refile-mongoid', '>= 0.0.1' + +if RUBY_VERSION >= '2.1.0' + gem 'refile', '~> 0.5', require: 'refile/rails' + gem 'refile-mini_magick', '>= 0.1.0' +end # Gems used only for assets and not required # in production environments by default. diff --git a/spec/dummy_app/app/active_record/field_test.rb b/spec/dummy_app/app/active_record/field_test.rb index 2a282af435..1c6ef8eb74 100644 --- a/spec/dummy_app/app/active_record/field_test.rb +++ b/spec/dummy_app/app/active_record/field_test.rb @@ -11,5 +11,6 @@ class FieldTest < ActiveRecord::Base dragonfly_accessor :dragonfly_asset mount_uploader :carrierwave_asset, CarrierwaveUploader - attachment :refile_asset + + attachment :refile_asset if RUBY_VERSION >= '2.1.0' end diff --git a/spec/dummy_app/app/mongoid/field_test.rb b/spec/dummy_app/app/mongoid/field_test.rb index d0c63b1313..51e1e121f5 100644 --- a/spec/dummy_app/app/mongoid/field_test.rb +++ b/spec/dummy_app/app/mongoid/field_test.rb @@ -3,7 +3,6 @@ class FieldTest include Mongoid::Paperclip include ActiveModel::ForbiddenAttributesProtection extend Dragonfly::Model - extend Refile::Mongoid::Attachment field :name, type: String field :title, type: String @@ -51,10 +50,15 @@ class FieldTest field :dragonfly_asset_uid dragonfly_accessor :dragonfly_asset mount_uploader :carrierwave_asset, CarrierwaveUploader - field :refile_asset_filename - field :refile_asset_size - field :refile_asset_content_type - attachment :refile_asset + + if RUBY_VERSION >= '2.1.0' + extend Refile::Mongoid::Attachment + + field :refile_asset_filename + field :refile_asset_size + field :refile_asset_content_type + attachment :refile_asset + end validates :short_text, length: {maximum: 255} end diff --git a/spec/rails_admin/config/fields/base_spec.rb b/spec/rails_admin/config/fields/base_spec.rb index d247cb404b..370ad9c26e 100644 --- a/spec/rails_admin/config/fields/base_spec.rb +++ b/spec/rails_admin/config/fields/base_spec.rb @@ -92,9 +92,11 @@ class CommentReversed < Tableless end end - context 'of a Refile installation' do - it 'is a _id field' do - expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.children_fields).to eq([:refile_asset_id, :refile_asset_filename, :refile_asset_size, :refile_asset_content_type]) + if RUBY_VERSION >= '2.1.0' + context 'of a Refile installation' do + it 'is a _id field' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.children_fields).to eq([:refile_asset_id, :refile_asset_filename, :refile_asset_size, :refile_asset_content_type]) + end end end end @@ -264,8 +266,10 @@ class CommentReversed < Tableless expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.carrierwave_asset']) end - it 'of refile should find the underlying column on the base table' do - expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.refile_asset_id']) + if RUBY_VERSION >= '2.1.0' + it 'of refile should find the underlying column on the base table' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable_columns.collect { |c| c[:column] }).to eq(['field_tests.refile_asset_id']) + end end end end @@ -299,9 +303,11 @@ class CommentReversed < Tableless expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :carrierwave_asset }.sortable).to eq(:carrierwave_asset) end - it 'of refile should target the first children field' do - expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable).to eq(:refile_asset_id) - expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.sortable).to eq(:refile_asset_id) + if RUBY_VERSION >= '2.1.0' + it 'of refile should target the first children field' do + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.searchable).to eq(:refile_asset_id) + expect(RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :refile_asset }.sortable).to eq(:refile_asset_id) + end end end end diff --git a/spec/rails_admin/config/fields/types/file_upload_spec.rb b/spec/rails_admin/config/fields/types/file_upload_spec.rb index 6caff94099..3aa051e324 100644 --- a/spec/rails_admin/config/fields/types/file_upload_spec.rb +++ b/spec/rails_admin/config/fields/types/file_upload_spec.rb @@ -18,7 +18,7 @@ expect(RailsAdmin.config(FieldTest).field(:carrierwave_asset).allowed_methods.collect(&:to_s)).to eq %w(carrierwave_asset remove_carrierwave_asset carrierwave_asset_cache) expect(RailsAdmin.config(FieldTest).field(:dragonfly_asset).allowed_methods.collect(&:to_s)).to eq %w(dragonfly_asset remove_dragonfly_asset retained_dragonfly_asset) expect(RailsAdmin.config(FieldTest).field(:paperclip_asset).allowed_methods.collect(&:to_s)).to eq %w(paperclip_asset delete_paperclip_asset) - expect(RailsAdmin.config(FieldTest).field(:refile_asset).allowed_methods.collect(&:to_s)).to eq %w(refile_asset remove_refile_asset) + expect(RailsAdmin.config(FieldTest).field(:refile_asset).allowed_methods.collect(&:to_s)).to eq %w(refile_asset remove_refile_asset) if RUBY_VERSION >= '2.1.0' end end