ripta-dm-paperclip 2.5.0.2 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown ADDED
@@ -0,0 +1,118 @@
1
+ # DataMapper Paperclip
2
+
3
+ **Compatibility note:** dm-paperclip 2.5.0 requires datamapper (dm-core) 1.0, while dm-paperclip 2.5.1 requires dm-core 1.1.
4
+
5
+ dm-paperclip is a port of Thoughtbot's Paperclip plugin to work with DataMapper. This plugin is fully compatible with
6
+ the original ActiveRecord-oriented Paperclip. You could take an existing ActiveRecord database and use it with DataMapper.
7
+ The module also includes updates validation handling and automatic including of the necessary 'property' fields into
8
+ your model.
9
+
10
+ To use it within your models, you need to ensure the three database fields are included. They are `{name}_file_name`,
11
+ `{name}_content_type`, and `{name}_file_size`. The first two are strings, the final column (file size) is an integer. So
12
+ if your user model has an avatar field, then you would add `avatar_file_name`, `avatar_content_type`, and `avatar_file_size`.
13
+
14
+ As with the original Paperclip plugin, it allows processing of thumbnails at the time the record is saved though _ImageMagick_.
15
+ It processes the thumbnails through the command-line applications instead of using _RMagick_.
16
+
17
+ See the documentation for the `has_attached_file` method for options.
18
+
19
+ ## Code
20
+
21
+ The code dm-paperclip is available at Github:
22
+
23
+ git clone git://github.com/krobertson/dm-paperclip.git
24
+
25
+ It is regularly updated to keep in sync with the latest from Thoughtbot.
26
+
27
+ Releases are tagged within the repository and versioned the same as the original model. You can also get the latest release
28
+ packaged as a gem through Rubyforge:
29
+
30
+ sudo gem install dm-paperclip
31
+
32
+ ## Usage
33
+
34
+ In your model:
35
+
36
+ class User
37
+ include DataMapper::Resource
38
+ include Paperclip::Resource
39
+ property :id, Serial
40
+ property :username, String
41
+ has_attached_file :avatar,
42
+ :styles => { :medium => "300x300>",
43
+ :thumb => "100x100>" }
44
+ end
45
+
46
+ You will need to add an initializer to configure Paperclip. If on Rails, can add a config/initializers/paperclip.rb, on Merb
47
+ can use config/init.rb and add it to the Merb::BootLoader.after_app_loads section. Can also use environment configs, rackup
48
+ file, Rake task, wherever.
49
+
50
+ Paperclip.configure do |config|
51
+ config.root = Rails.root # the application root to anchor relative urls (defaults to Dir.pwd)
52
+ config.env = Rails.env # server env support, defaults to ENV['RACK_ENV'] or 'development'
53
+ config.use_dm_validations = true # validate attachment sizes and such, defaults to false
54
+ config.processors_path = 'lib/pc' # relative path to look for processors, defaults to 'lib/paperclip_processors'
55
+ end
56
+
57
+ Your database will need to add four columns, `avatar_file_name` (varchar), `avatar_content_type` (varchar), and
58
+ `avatar_file_size` (integer), and `avatar_updated_at` (datetime). You can either add these manually, auto-
59
+ migrate, or use the following migration:
60
+
61
+ migration( 1, :add_user_paperclip_fields ) do
62
+ up do
63
+ modify_table :users do
64
+ add_column :avatar_file_name, "varchar(255)"
65
+ add_column :avatar_content_type, "varchar(255)"
66
+ add_column :avatar_file_size, "integer"
67
+ add_column :avatar_updated_at, "datetime"
68
+ end
69
+ end
70
+ down do
71
+ modify_table :users do
72
+ drop_columns :avatar_file_name, :avatar_content_type, :avatar_file_size, :avatar_updated_at
73
+ end
74
+ end
75
+ end
76
+
77
+ In your edit and new views:
78
+
79
+ <% form_for @user, { :action => url(:user), :multipart => true } do %>
80
+ <%= file_field :name => 'avatar' %>
81
+ <% end %>
82
+
83
+ In your controller:
84
+
85
+ def create
86
+ ...
87
+ @user.avatar = params[:avatar]
88
+ end
89
+
90
+ In your show view:
91
+
92
+ <%= image_tag @user.avatar.url %>
93
+ <%= image_tag @user.avatar.url(:medium) %>
94
+ <%= image_tag @user.avatar.url(:thumb) %>
95
+
96
+ The following validations are available:
97
+
98
+ validates_attachment_presence :avatar
99
+ validates_attachment_content_type :avatar, :content_type => "image/png"
100
+ validates_attachment_size :avatar, :in => 1..10240
101
+ validates_attachment_thumbnails :avatar
102
+
103
+ In order to use validations, you must have loaded the 'dm-validations' gem into your app
104
+ (available as a part of dm-more). If the gem isn't loaded before DM-Paperclip is loaded,
105
+ the validation methods will be excluded. You will also need to include DataMapper::Validate
106
+ into your mode:
107
+
108
+ class User
109
+ include DataMapper::Resource
110
+ include DataMapper::Validate
111
+ include Paperclip::Resource
112
+ property :id, Serial
113
+ property :username, String
114
+ has_attached_file :avatar,
115
+ :styles => { :medium => "300x300>",
116
+ :thumb => "100x100>" }
117
+ validates_attachment_size :avatar, :in => 1..5120
118
+ end
data/Rakefile CHANGED
@@ -34,7 +34,7 @@ Rake::RDocTask.new(:doc) do |rdoc|
34
34
  rdoc.rdoc_dir = 'doc'
35
35
  rdoc.title = 'DM-Paperclip'
36
36
  rdoc.options << '--line-numbers' << '--inline-source'
37
- rdoc.rdoc_files.include('README.rdoc')
37
+ rdoc.rdoc_files.include('README.markdown')
38
38
  rdoc.rdoc_files.include('lib/**/*.rb')
39
39
  end
40
40
 
@@ -63,7 +63,7 @@ spec = Gem::Specification.new do |s|
63
63
  s.homepage = "http://invalidlogic.com/dm-paperclip/"
64
64
  s.platform = Gem::Platform::RUBY
65
65
  s.summary = "File attachments as attributes for DataMapper, based on the original Paperclip by Jon Yurek at Thoughtbot"
66
- s.files = FileList["README.rdoc",
66
+ s.files = FileList["README.markdown",
67
67
  "LICENSE",
68
68
  "Rakefile",
69
69
  "init.rb",
@@ -72,7 +72,7 @@ spec = Gem::Specification.new do |s|
72
72
  s.test_files = FileList["test/**/test_*.rb"].to_a
73
73
  s.rubyforge_project = "dm-paperclip"
74
74
  s.has_rdoc = true
75
- s.extra_rdoc_files = ["README.rdoc"]
75
+ s.extra_rdoc_files = ["README.markdown"]
76
76
  s.rdoc_options << '--line-numbers' << '--inline-source'
77
77
  s.requirements << "ImageMagick"
78
78
  s.requirements << "data_mapper"
@@ -77,7 +77,7 @@ module Paperclip
77
77
  return nil if uploaded_file.nil?
78
78
 
79
79
  if uploaded_file.respond_to?(:[])
80
- uploaded_file = uploaded_file.to_mash
80
+ # uploaded_file = uploaded_file.to_mash
81
81
 
82
82
  @queued_for_write[:original] = uploaded_file['tempfile']
83
83
  instance_write(:file_name, uploaded_file['filename'].strip.gsub(/[^\w\d\.\-]+/, '_'))
@@ -85,7 +85,7 @@ module Paperclip
85
85
  instance_write(:file_size, uploaded_file['size'] ? uploaded_file['size'].to_i : uploaded_file['tempfile'].size.to_i)
86
86
  instance_write(:updated_at, Time.now)
87
87
  else
88
- @queued_for_write[:original] = uploaded_file.tempfile
88
+ @queued_for_write[:original] = uploaded_file.to_tempfile
89
89
  instance_write(:file_name, uploaded_file.original_filename.strip.gsub(/[^\w\d\.\-]+/, '_'))
90
90
  instance_write(:content_type, uploaded_file.content_type.to_s.strip)
91
91
  instance_write(:file_size, uploaded_file.size.to_i)
@@ -172,15 +172,15 @@ module Paperclip
172
172
  end
173
173
 
174
174
  def parse_credentials creds
175
- creds = find_credentials(creds).to_mash.stringify_keys!
175
+ creds = find_credentials(creds).to_hash.stringify_keys
176
176
  if defined? Merb && Merb.respond_to?(:env)
177
- (creds[Merb.env] || creds).symbolize_keys
177
+ (creds[Merb.env.to_s] || creds).symbolize_keys
178
178
  elsif defined? RAILS_ENV
179
- (creds[RAILS_ENV] || creds).symbolize_keys
179
+ (creds[RAILS_ENV.to_s] || creds).symbolize_keys
180
180
  elsif defined? Rails && Rails.respond_to(:env)
181
- (creds[Rails.env] || creds).symbolize_keys
181
+ (creds[Rails.env.to_s] || creds).symbolize_keys
182
182
  elsif defined? RACK_ENV
183
- (creds[RACK_ENV] || creds).symbolize_keys
183
+ (creds[RACK_ENV.to_s] || creds).symbolize_keys
184
184
  else
185
185
  creds.symbolize_keys
186
186
  end
@@ -51,9 +51,9 @@ module Paperclip
51
51
  return true if @options[:in].include? field_value.to_i
52
52
 
53
53
  error_message ||= @options[:message] unless @options[:message].nil?
54
- error_message ||= "%s must be less than %s bytes".t(ActiveSupport::Inflector.humanize(@field_name), @options[:less_than]) unless @options[:less_than].nil?
55
- error_message ||= "%s must be greater than %s bytes".t(ActiveSupport::Inflector.humanize(@field_name), @options[:greater_than]) unless @options[:greater_than].nil?
56
- error_message ||= "%s must be between %s and %s bytes".t(ActiveSupport::Inflector.humanize(@field_name), @options[:in].first, @options[:in].last)
54
+ error_message ||= sprintf("%s must be less than %s bytes", @field_name.to_s.humanize, @options[:less_than]) unless @options[:less_than].nil?
55
+ error_message ||= sprintf("%s must be greater than %s bytes", @field_name.to_s.humanize, @options[:greater_than]) unless @options[:greater_than].nil?
56
+ error_message ||= sprintf("%s must be between %s and %s bytes", @field_name.to_s.humanize, @options[:in].first, @options[:in].last)
57
57
  add_error(target, error_message , @field_name)
58
58
  return false
59
59
  end
@@ -68,7 +68,7 @@ module Paperclip
68
68
  def call(target)
69
69
  field_value = target.validation_property_value(@field_name)
70
70
  if field_value.nil? || field_value.original_filename.blank?
71
- error_message = @options[:message] || "%s must be set".t(ActiveSupport::Inflector.humanize(@field_name))
71
+ error_message = @options[:message] || sprintf("%s must be set", @field_name.to_s.humanize)
72
72
  add_error(target, error_message , @field_name)
73
73
  return false
74
74
  end
@@ -91,7 +91,7 @@ module Paperclip
91
91
  content_type = target.validation_property_value(:"#{@field_name}_content_type")
92
92
  unless valid_types.any?{|t| t === content_type }
93
93
  error_message ||= @options[:message] unless @options[:message].nil?
94
- error_message ||= "%s's content type of '%s' is not a valid content type".t(ActiveSupport::Inflector.humanize(@field_name), content_type)
94
+ error_message ||= sprintf("%s's content type of '%s' is not a valid content type", @field_name.to_s.humanize, content_type)
95
95
  add_error(target, error_message , @field_name)
96
96
  return false
97
97
  end
data/lib/dm-paperclip.rb CHANGED
@@ -43,7 +43,7 @@ require 'dm-paperclip/attachment'
43
43
  # documentation for Paperclip::ClassMethods for more useful information.
44
44
  module Paperclip
45
45
 
46
- VERSION = "2.5.0.1"
46
+ VERSION = "2.5.1"
47
47
 
48
48
  # To configure Paperclip, put this code in an initializer, Rake task, or wherever:
49
49
  #
@@ -170,7 +170,7 @@ module Paperclip
170
170
  end
171
171
 
172
172
  def processor name #:nodoc:
173
- name = name.to_s.camel_case
173
+ name = name.to_s.camelize
174
174
  processor = Paperclip.const_get(name)
175
175
  unless processor.ancestors.include?(Paperclip::Processor)
176
176
  raise PaperclipError.new("[paperclip] Processor #{name} was not found")
@@ -0,0 +1,8 @@
1
+ development:
2
+ key: 54321
3
+ production:
4
+ key: 12345
5
+ test:
6
+ bucket: <%= ENV['S3_BUCKET'] %>
7
+ access_key_id: <%= ENV['S3_KEY'] %>
8
+ secret_access_key: <%= ENV['S3_SECRET'] %>
data/test/helper.rb CHANGED
@@ -8,7 +8,11 @@ require 'shoulda'
8
8
  require 'mocha'
9
9
  require 'tempfile'
10
10
 
11
- require 'extlib'
11
+ if ENV['EXTLIB']
12
+ require 'extlib'
13
+ else
14
+ require 'active_support/all'
15
+ end
12
16
  require 'dm-core'
13
17
  require 'dm-validations'
14
18
  require 'dm-migrations'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ripta-dm-paperclip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 67
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 5
9
- - 0
10
- - 2
11
- version: 2.5.0.2
9
+ - 1
10
+ version: 2.5.1
12
11
  platform: ruby
13
12
  authors:
14
13
  - Ken Robertson
@@ -16,69 +15,10 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2011-01-22 00:00:00 -05:00
18
+ date: 2011-04-06 00:00:00 -04:00
20
19
  default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
23
- name: dm-core
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ~>
29
- - !ruby/object:Gem::Version
30
- hash: 23
31
- segments:
32
- - 1
33
- - 0
34
- - 0
35
- version: 1.0.0
36
- type: :runtime
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: shoulda
40
- prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- hash: 3
47
- segments:
48
- - 0
49
- version: "0"
50
- type: :development
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: mocha
54
- prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - "="
59
- - !ruby/object:Gem::Version
60
- hash: 43
61
- segments:
62
- - 0
63
- - 9
64
- - 8
65
- version: 0.9.8
66
- type: :development
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: aws-s3
70
- prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- type: :development
81
- version_requirements: *id004
20
+ dependencies: []
21
+
82
22
  description:
83
23
  email: ken@invalidlogic.com
84
24
  executables: []
@@ -86,9 +26,9 @@ executables: []
86
26
  extensions: []
87
27
 
88
28
  extra_rdoc_files:
89
- - README.rdoc
29
+ - README.markdown
90
30
  files:
91
- - README.rdoc
31
+ - README.markdown
92
32
  - LICENSE
93
33
  - Rakefile
94
34
  - init.rb
@@ -109,6 +49,7 @@ files:
109
49
  - test/fixtures/50x50.png
110
50
  - test/fixtures/5k.png
111
51
  - test/fixtures/bad.png
52
+ - test/fixtures/s3.yml
112
53
  - test/fixtures/text.txt
113
54
  - test/geometry_test.rb
114
55
  - test/helper.rb
@@ -118,7 +59,7 @@ files:
118
59
  - test/storage_test.rb
119
60
  - test/thumbnail_test.rb
120
61
  has_rdoc: true
121
- homepage: http://github.com/krobertson/dm-paperclip
62
+ homepage: http://invalidlogic.com/dm-paperclip/
122
63
  licenses: []
123
64
 
124
65
  post_install_message:
@@ -147,8 +88,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
88
  version: "0"
148
89
  requirements:
149
90
  - ImageMagick
91
+ - data_mapper
150
92
  rubyforge_project: dm-paperclip
151
- rubygems_version: 1.4.1
93
+ rubygems_version: 1.6.2
152
94
  signing_key:
153
95
  specification_version: 3
154
96
  summary: File attachments as attributes for DataMapper, based on the original Paperclip by Jon Yurek at Thoughtbot
data/README.rdoc DELETED
@@ -1,116 +0,0 @@
1
- =DataMapper Paperclip
2
-
3
- DM-Paperclip is a port of Thoughtbot's Paperclip plugin to work with DataMapper. This plugin is fully compatible with
4
- the original ActiveRecord-oriented Paperclip. You could take an existing ActiveRecord database and use it with DataMapper.
5
- The module also includes updates validation handling and automatic including of the necessary 'property' fields into
6
- your model.
7
-
8
- To use it within your models, you need to ensure the three database fields are included. They are {name}_file_name,
9
- {name}_content_type, and {name}_file_size. The first two are strings, the final _file_size column is an integer. So
10
- if your user model has an avatar field, then you would add avatar_file_name, avatar_content_type, and avatar_file_size.
11
-
12
- As with the original Paperclip plugin, it allows processing of thumbnails at the time the record is saved though ImageMagick.
13
- It processes the thumbnails through the command-line applications instead of using RMagick.
14
-
15
- See the documentation for the +has_attached_file+ method for options.
16
-
17
- ==Code
18
-
19
- The code DM-Paperclip is available at Github:
20
-
21
- git clone git://github.com/krobertson/dm-paperclip.git
22
-
23
- It is regularly updated to keep in sync with the latest from Thoughtbot.
24
-
25
- Releases are tagged within the repository and versioned the same as the original model. You can also get the latest release
26
- packaged as a gem through Rubyforge:
27
-
28
- sudo gem install dm-paperclip
29
-
30
- ==Usage
31
-
32
- In your model:
33
-
34
- class User
35
- include DataMapper::Resource
36
- include Paperclip::Resource
37
- property :id, Serial
38
- property :username, String
39
- has_attached_file :avatar,
40
- :styles => { :medium => "300x300>",
41
- :thumb => "100x100>" }
42
- end
43
-
44
- You will need to add an initializer to configure Paperclip. If on Rails, can add a config/initializers/paperclip.rb, on Merb
45
- can use config/init.rb and add it to the Merb::BootLoader.after_app_loads section. Can also use environment configs, rackup
46
- file, Rake task, wherever.
47
-
48
- Paperclip.configure do |config|
49
- config.root = Rails.root # the application root to anchor relative urls (defaults to Dir.pwd)
50
- config.env = Rails.env # server env support, defaults to ENV['RACK_ENV'] or 'development'
51
- config.use_dm_validations = true # validate attachment sizes and such, defaults to false
52
- config.processors_path = 'lib/pc' # relative path to look for processors, defaults to 'lib/paperclip_processors'
53
- end
54
-
55
- Your database will need to add four columns, avatar_file_name (varchar), avatar_content_type (varchar), and
56
- avatar_file_size (integer), and avatar_updated_at (datetime). You can either add these manually, auto-
57
- migrate, or use the following migration:
58
-
59
- migration( 1, :add_user_paperclip_fields ) do
60
- up do
61
- modify_table :users do
62
- add_column :avatar_file_name, "varchar(255)"
63
- add_column :avatar_content_type, "varchar(255)"
64
- add_column :avatar_file_size, "integer"
65
- add_column :avatar_updated_at, "datetime"
66
- end
67
- end
68
- down do
69
- modify_table :users do
70
- drop_columns :avatar_file_name, :avatar_content_type, :avatar_file_size, :avatar_updated_at
71
- end
72
- end
73
- end
74
-
75
- In your edit and new views:
76
-
77
- <% form_for @user, { :action => url(:user), :multipart => true } do %>
78
- <%= file_field :name => 'avatar' %>
79
- <% end %>
80
-
81
- In your controller:
82
-
83
- def create
84
- ...
85
- @user.avatar = params[:avatar]
86
- end
87
-
88
- In your show view:
89
-
90
- <%= image_tag @user.avatar.url %>
91
- <%= image_tag @user.avatar.url(:medium) %>
92
- <%= image_tag @user.avatar.url(:thumb) %>
93
-
94
- The following validations are available:
95
-
96
- validates_attachment_presence :avatar
97
- validates_attachment_content_type :avatar, :content_type => "image/png"
98
- validates_attachment_size :avatar, :in => 1..10240
99
- validates_attachment_thumbnails :avatar
100
-
101
- In order to use validations, you must have loaded the 'dm-validations' gem into your app
102
- (available as a part of dm-more). If the gem isn't loaded before DM-Paperclip is loaded,
103
- the validation methods will be excluded. You will also need to include DataMapper::Validate
104
- into your mode:
105
-
106
- class User
107
- include DataMapper::Resource
108
- include DataMapper::Validate
109
- include Paperclip::Resource
110
- property :id, Serial
111
- property :username, String
112
- has_attached_file :avatar,
113
- :styles => { :medium => "300x300>",
114
- :thumb => "100x100>" }
115
- validates_attachment_size :avatar, :in => 1..5120
116
- end