paperclip-meta 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eaa72aa228c4f1d2b1efcb50f2cf3b0d04470ad4
4
- data.tar.gz: 48ba30bf86c2b7a832bf3001466a31b03cdd31f8
3
+ metadata.gz: aabd2e01ad47d7f22e378b79e409a9798a4778c9
4
+ data.tar.gz: 9ea6f76f9f3fcd8aec42555ece5570363d4f7f78
5
5
  SHA512:
6
- metadata.gz: c195bfb171c919f72926f4deb4a64b79e8ffab1cc65b653f68d6c3c139fc62044c9a632e888d645655a8608c4ad07be608dff821bcb1993a652de6c8c000f1ac
7
- data.tar.gz: b5014f6904e9ddcdcc35995d80ef58d29f0adbae1dc6d632e4f37508b78fee4e2ffaa6b79ecefb48736d69feb6063d4374de813d7b193fa4505fd10394fde927
6
+ metadata.gz: 85a9971fd625ad0efc89959e6e04663dd1fabe2f079bfdaaa867913cac834a60a3609713da04d06ed464fecc5fe61528a6d00b4039a14232f522a4e8409e9d03
7
+ data.tar.gz: 880f048a350568ec742879385ea8c1559648c78cc74909a2124d510b2e1568edfd6475a9b59e75257649843af392330adc3f0cd201a39fa27ff07a32aa3d19c9
data/README.md CHANGED
@@ -5,8 +5,7 @@
5
5
 
6
6
  Add width, height, and size to paperclip images.
7
7
 
8
- Paperclip Meta gets image dimensions after post_process_styles using paperclips own Geometry.from_file.
9
- This should make paperclip-meta storage independent.
8
+ Paperclip Meta gets image dimensions after `post_process_styles` using paperclip's `Geometry.from_file`.
10
9
 
11
10
  ### Setup
12
11
 
@@ -19,25 +18,21 @@ gem 'paperclip-meta'
19
18
  Create migration to add a *_meta column:
20
19
 
21
20
  ```ruby
22
- class AddMetaToAvatar < ActiveRecord::Migration
23
- def self.up
21
+ class AddAvatarMetaToUsers < ActiveRecord::Migration
22
+ def change
24
23
  add_column :users, :avatar_meta, :text
25
24
  end
26
-
27
- def self.down
28
- remove_column :users, :avatar_meta
29
- end
30
25
  end
31
26
  ```
32
27
 
33
- Rebuild all thumbnails to fill meta column if you already have some attachments.
28
+ Rebuild all thumbnails to populate the meta column if you already have some attachments.
34
29
 
35
- Now you can use meta-magic:
30
+ Now you can grab the size from the paperclip attachment:
36
31
 
37
32
  ```
38
- <%= image_tag @user.avatar.url, :size => @user.avatar.image_size %>
39
- <%= image_tag @user.avatar.url(:medium), :size => @user.avatar.image_size(:medium) %>
40
- <%= image_tag @user.avatar.url(:thumb), :size => @user.avatar.image_size(:thumb) %>
33
+ <%= image_tag user.avatar.url, size: user.avatar.image_size %>
34
+ <%= image_tag user.avatar.url(:medium), size: user.avatar.image_size(:medium) %>
35
+ <%= image_tag user.avatar.url(:thumb), size: user.avatar.image_size(:thumb) %>
41
36
  ```
42
37
 
43
38
  ### Internals
@@ -45,18 +40,28 @@ Now you can use meta-magic:
45
40
  The meta column is simple hash:
46
41
 
47
42
  ```ruby
48
- :style => {
49
- :width => 100,
50
- :height => 100,
51
- :size => 42000
43
+ style: {
44
+ width: 100,
45
+ height: 100,
46
+ size: 42000
52
47
  }
53
48
  ```
54
49
 
55
50
  This hash will be marshaled and base64 encoded before writing to model attribute.
56
51
 
57
- Meta methods provided:
58
- - width `@user.avatar.width(:thumb)`
59
- - height `@user.avatar.height(:medium)`
60
- - size `@user.avatar.size`
52
+ `height`, `width`, and `size` methods are provided:
53
+
54
+ ```ruby
55
+ user.avatar.width(:thumb)
56
+ => 100
57
+ user.avatar.height(:medium)
58
+ => 200
59
+ user.avatar.size
60
+ => '60x70'
61
+ ```
62
+
63
+ You can pass the image style to these methods. If a style is not passed, the default style will be used.
64
+
65
+ ### Alternatives
61
66
 
62
- You can pass the image style to these methods. If a style is not passed, default_style will be used.
67
+ https://github.com/thoughtbot/paperclip/wiki/Extracting-image-dimensions
data/Rakefile CHANGED
@@ -1,8 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
- # spec is default task
8
- task :default => :spec
7
+ task default: :spec
@@ -10,7 +10,7 @@ module Paperclip
10
10
 
11
11
  module InstanceMethods
12
12
  def save_with_meta_data
13
- if @queued_for_delete.any? && @queued_for_write.empty? && instance.respond_to?(:"#{name}_meta=")
13
+ if @queued_for_delete.any? && @queued_for_write.empty?
14
14
  instance_write(:meta, meta_encode({}))
15
15
  end
16
16
  save_without_meta_data
@@ -24,7 +24,7 @@ module Paperclip
24
24
  @queued_for_write.each do |style, file|
25
25
  begin
26
26
  geo = Geometry.from_file file
27
- meta[style] = {:width => geo.width.to_i, :height => geo.height.to_i, :size => file.size }
27
+ meta[style] = { width: geo.width.to_i, height: geo.height.to_i, size: file.size }
28
28
  rescue Paperclip::Errors::NotIdentifiedByImageMagickError
29
29
  meta[style] = {}
30
30
  end
@@ -33,22 +33,19 @@ module Paperclip
33
33
  return if meta == {}
34
34
 
35
35
  instance.send("#{name}_meta=", meta_encode(meta))
36
- instance.class
37
- .where(instance.class.primary_key => instance.id)
38
- .update_all("#{name}_meta" => meta_encode(meta))
39
36
  end
40
37
 
41
38
  # Use meta info for style if required
42
- def size_with_meta_data(passed_style = nil)
43
- passed_style ? meta_read(passed_style, :size) : size_without_meta_data
39
+ def size_with_meta_data(style = nil)
40
+ style ? meta_read(style, :size) : size_without_meta_data
44
41
  end
45
42
 
46
- def height(*args)
47
- meta_read((args.first || default_style), :height)
43
+ def height(style = default_style)
44
+ meta_read style, :height
48
45
  end
49
46
 
50
- def width(*args)
51
- meta_read((args.first || default_style), :width)
47
+ def width(style = default_style)
48
+ meta_read style, :width
52
49
  end
53
50
 
54
51
  # Return image dimesions ("WxH") for given style name. If style name not given,
@@ -1,5 +1,5 @@
1
1
  module Paperclip
2
2
  module Meta
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -21,8 +21,8 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency "paperclip", "~> 3.0"
22
22
 
23
23
  s.add_development_dependency "bundler", "~> 1.5"
24
- s.add_development_dependency "rake"
25
- s.add_development_dependency "rspec"
24
+ s.add_development_dependency "rake", "~> 10.1"
25
+ s.add_development_dependency "rspec", "~> 2.14"
26
26
  s.add_development_dependency "activerecord", "~> 4.0"
27
27
  s.add_development_dependency "sqlite3", "~> 1.3"
28
28
  end
@@ -1,49 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Geometry saver plugin" do
4
- before(:each) do
5
- small_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'small.png')
6
- big_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'big.jpg')
7
- not_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'big.zip')
8
- @big_image = File.open(big_path)
9
- @small_image = File.open(small_path)
10
- @big_size = Paperclip::Geometry.from_file(big_path)
11
- @small_size = Paperclip::Geometry.from_file(small_path)
12
- @not_image = File.open(not_path)
13
- end
14
-
3
+ describe "Attachment" do
15
4
  it "saves image geometry for original image" do
16
- img = Image.new
17
- img.small_image = @small_image
18
- img.save!
19
-
20
- img.reload # Ensure that updates really saved to db
21
-
22
- img.small_image.width eq(@small_size.width)
23
- img.small_image.height eq(@small_size.height)
5
+ img = Image.create(small_image: small_image)
6
+ img.reload
7
+ geometry = geometry_for(small_path)
8
+ img.small_image.width.should == geometry.width
9
+ img.small_image.height.should == geometry.height
24
10
  end
25
11
 
26
12
  it "saves geometry for styles" do
27
- img = Image.new
28
- img.small_image = @small_image
29
- img.big_image = @big_image
30
- img.save!
13
+ img = Image.create(small_image: small_image, big_image: big_image)
14
+ img.big_image.width(:thumb).should == 100
15
+ img.big_image.height(:thumb).should == 100
16
+ end
31
17
 
32
- img.big_image.width(:small).should == 100
33
- img.big_image.height(:small).should == 100
18
+ it "sets geometry on update" do
19
+ img = Image.create!
20
+ img.small_image = small_image
21
+ img.save
22
+ geometry = geometry_for(small_path)
23
+ img.small_image.width.should == geometry.width
24
+ img.small_image.height.should == geometry.height
34
25
  end
35
26
 
36
27
  describe 'file size' do
37
28
  before do
38
- @image = Image.new
39
- @image.big_image = @big_image
40
- @image.save!
29
+ @image = Image.create(big_image: big_image)
41
30
  end
42
31
 
43
32
  it 'should save file size with meta data ' do
44
- path = File.join(File.dirname(__FILE__), "../tmp/fixtures/tmp/small/#{@image.id}.jpg")
33
+ path = File.join(File.dirname(__FILE__), "../tmp/fixtures/tmp/thumb/#{@image.id}.jpg")
45
34
  size = File.stat(path).size
46
- @image.big_image.size(:small).should == size
35
+ @image.big_image.size(:thumb).should == size
47
36
  end
48
37
 
49
38
  it 'should access normal paperclip method when no style passed' do
@@ -54,28 +43,44 @@ describe "Geometry saver plugin" do
54
43
  it 'should have access to original file size' do
55
44
  @image.big_image.size.should == 37042
56
45
  end
57
-
58
46
  end
59
47
 
60
48
  it "clears geometry fields when image is destroyed" do
61
- img = Image.new
62
- img.small_image = @small_image
63
- img.big_image = @big_image
64
- img.save!
65
-
66
- img.big_image.width(:small).should == 100
49
+ img = Image.create(small_image: small_image, big_image: big_image)
50
+ img.big_image.width(:thumb).should == 100
67
51
 
68
52
  img.big_image = nil
69
53
  img.save!
70
54
 
71
- img.big_image.width(:small).should be_nil
55
+ img.big_image.width(:thumb).should be_nil
72
56
  end
73
57
 
74
58
  it "does not fails when file is not an image" do
75
59
  img = Image.new
76
- img.small_image = @not_image
77
- lambda { img.save! }.should_not raise_error
78
- img.small_image.width(:small).should be_nil
60
+ img.small_image = not_image
61
+ -> { img.save! }.should_not raise_error
62
+ img.small_image.width(:thumb).should be_nil
63
+ end
64
+
65
+ private
66
+
67
+ def small_path
68
+ File.join(File.dirname(__FILE__), '..', 'fixtures', 'small.png')
69
+ end
70
+
71
+ def small_image
72
+ File.open(small_path)
79
73
  end
80
74
 
81
- end
75
+ def geometry_for(path)
76
+ Paperclip::Geometry.from_file(path)
77
+ end
78
+
79
+ def big_image
80
+ File.open(File.join(File.dirname(__FILE__), '..', 'fixtures', 'big.jpg'))
81
+ end
82
+
83
+ def not_image
84
+ File.open(File.join(File.dirname(__FILE__), '..', 'fixtures', 'big.zip'))
85
+ end
86
+ end
@@ -7,7 +7,11 @@ ActiveRecord::Base.establish_connection(
7
7
  database: ":memory:"
8
8
  )
9
9
 
10
- ActiveRecord::Base.logger = Logger.new(STDERR) if ENV["VERBOSE"]
10
+ if ENV["VERBOSE"]
11
+ ActiveRecord::Base.logger = Logger.new(STDERR)
12
+ else
13
+ Paperclip.options[:log] = false
14
+ end
11
15
 
12
16
  load(File.join(File.dirname(__FILE__), 'schema.rb'))
13
17
 
@@ -24,5 +28,5 @@ class Image < ActiveRecord::Base
24
28
  :storage => :filesystem,
25
29
  :path => "./spec/tmp/fixtures/tmp/:style/:id.:extension",
26
30
  :url => "./spec/tmp/fixtures/tmp/:style/:id.extension",
27
- :styles => { :small => "100x100#" }
31
+ :styles => { :thumb => "100x100#" }
28
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip-meta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Bondar
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-30 00:00:00.000000000 Z
12
+ date: 2014-01-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: paperclip
@@ -43,30 +43,30 @@ dependencies:
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '10.1'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '10.1'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: '2.14'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '2.14'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: activerecord
72
72
  requirement: !ruby/object:Gem::Requirement