Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #729 from Sporky023/master

replace Paperclip::Attachment#initialize options with an AttachmentOptions instance
  • Loading branch information...
commit 7f948f8257f9b5cca97a68391b9e904699a03838 2 parents 5d4ba62 + 9eda1bb
Luke Griffiths Sporky023 authored
1  .gitignore
View
@@ -20,3 +20,4 @@ capybara*.html
*SPIKE*
*emfile.lock
+tags
3  lib/paperclip.rb
View
@@ -37,6 +37,7 @@
require 'paperclip/interpolations'
require 'paperclip/style'
require 'paperclip/attachment'
+require 'paperclip/attachment_options'
require 'paperclip/storage'
require 'paperclip/callback_compatibility'
require 'paperclip/missing_attachment_styles'
@@ -325,7 +326,7 @@ def has_attached_file name, options = {}
self.attachment_definitions = self.attachment_definitions.dup
end
- attachment_definitions[name] = {:validations => []}.merge(options)
+ attachment_definitions[name] = Paperclip::AttachmentOptions.new(options)
Paperclip.classes_with_attachments << self.name
Paperclip.check_for_url_clash(name,attachment_definitions[name][:url],self.name)
10 lib/paperclip/attachment_options.rb
View
@@ -0,0 +1,10 @@
+module Paperclip
+ class AttachmentOptions < Hash
+ def initialize(options)
+ options = {:validations => []}.merge(options)
+ options.each do |k, v|
+ self.[]=(k, v)
+ end
+ end
+ end
+end
40 test/attachment_options_test.rb
View
@@ -0,0 +1,40 @@
+require './test/helper'
+
+class AttachmentOptionsTest < Test::Unit::TestCase
+ should "be a Hash" do
+ assert_kind_of Hash, Paperclip::AttachmentOptions.new({})
+ end
+
+ should "add a default empty validations" do
+ options = {:arbi => :trary}
+ expected = {:validations => []}.merge(options)
+ actual = Paperclip::AttachmentOptions.new(options).to_hash
+ assert_equal expected, actual
+ end
+
+ should "not override validations if passed to initializer" do
+ options = {:validations => "something"}
+ attachment_options = Paperclip::AttachmentOptions.new(options)
+ assert_equal "something", attachment_options[:validations]
+ end
+
+ should "respond to []" do
+ assert Paperclip::AttachmentOptions.new({}).respond_to?(:[])
+ end
+
+ should "deliver the specified options through []" do
+ intended_options = {:specific_key => "specific value"}
+ attachment_options = Paperclip::AttachmentOptions.new(intended_options)
+ assert_equal "specific value", attachment_options[:specific_key]
+ end
+
+ should "respond to []=" do
+ assert Paperclip::AttachmentOptions.new({}).respond_to?(:[]=)
+ end
+
+ should "remember options set with []=" do
+ attachment_options = Paperclip::AttachmentOptions.new({})
+ attachment_options[:foo] = "bar"
+ assert_equal "bar", attachment_options[:foo]
+ end
+end
8 test/helper.rb
View
@@ -54,10 +54,14 @@ def setup
ActiveRecord::Base.establish_connection(config['test'])
Paperclip.options[:logger] = ActiveRecord::Base.logger
-Dir[File.join(File.dirname(__FILE__), 'support','*')].each do |f|
- require f
+def require_everything_in_directory(directory_name)
+ Dir[File.join(File.dirname(__FILE__), directory_name, '*')].each do |f|
+ require f
+ end
end
+require_everything_in_directory('support')
+
def reset_class class_name
ActiveRecord::Base.send(:include, Paperclip::Glue)
Object.send(:remove_const, class_name) rescue nil
Please sign in to comment.
Something went wrong with that request. Please try again.