photofy 0.0.2 → 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/photofy.rb +57 -7
  3. metadata +17 -18
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ec1560ea85ea9034a20b8a76dd3ceb0c9d5198d4
4
+ data.tar.gz: 84bb74cf0fdee32a3af2bdbc9977e1921473a4be
5
+ SHA512:
6
+ metadata.gz: 4eb138ccebf70a8ff9dc724b5ed5e8b426f0f57a3a430caa285c50688a0c16c3758fe39debd9bec688c708d331710ea25a5c6e583d83e80eb04481aec96e5304
7
+ data.tar.gz: 98662d31c2e5d0ee89245997eb76ffd22a914230daa6303d8fef8c61d9bcfc8733a343e00175f3348d4582fcca1fa7a072f441ac237abf957250c036fec22ddd
data/lib/photofy.rb CHANGED
@@ -1,3 +1,9 @@
1
+ begin
2
+ require "RMagick"
3
+ rescue Exception => e
4
+ puts "Unable to load 'RMagick' for after_photofy methods"
5
+ end
6
+
1
7
  module Photofy
2
8
  def self.included(base)
3
9
  base.extend(ClassMethods)
@@ -9,6 +15,49 @@ module Photofy
9
15
  attr_accessor :photo_repository
10
16
  attr_accessor :photo_formats
11
17
 
18
+ #Generates photo field from photo_field argument which can be used to store a post processed image(using rmagick) of originally uploaded.
19
+ #Takes two arguments:
20
+ #1. field name
21
+ #2. Proc with rmagick img object
22
+ #return value should be an object of rmagick's image object
23
+ #
24
+ #Example usage..
25
+ #after_photofy :stamp, Proc.new{|img| img.scale(25, 25)}
26
+ #will give a 'stamp' attribute which on save of main photo filed will scale it to 25 x 25 dimesnions
27
+ #after_photofy :portfolio, Proc.new{|img| img.scale(150, 250)}
28
+ #will give a 'portfolio' attribute which on save of main photo filed will scale it to 150 x 250 dimesnions
29
+ def after_photofy(photo_field, p = Proc.new { |img| puts "Rmagick image: #{img.inspect}" })
30
+ define_method "#{photo_field}" do
31
+ File.exist?(send("#{photo_field}_path")) ? File.read(send("#{photo_field}_path")) : nil
32
+ end
33
+
34
+ define_method "#{photo_field}_path" do
35
+ directoy_path = FileUtils.mkdir_p File.join(self.class.photo_repository, self.class.photo_field.to_s)
36
+ File.join(directoy_path, "#{photo_field}.jpg")
37
+ end
38
+
39
+ define_method "process_n_save_#{photo_field}" do
40
+ begin
41
+ mphoto_f = self.class.photo_field
42
+ if File.exist?(send("#{mphoto_f}_path"))
43
+ img = Magick::Image.read(send("#{mphoto_f}_path")).first # path of Orignal image that has to be worked upon
44
+ img = p.call(img)
45
+ img.write(send("#{photo_field}_path"))
46
+ end
47
+ rescue Exception => e
48
+ puts "Unable to process_n_save_#{photo_field} due to #{e.message}"
49
+ e.backtrace.each { |trace| puts trace }
50
+ end
51
+ end
52
+
53
+ define_method "destroy_#{photo_field}" do
54
+ File.delete(send("#{photo_field}_path")) if File.exist?(send("#{photo_field}_path"))
55
+ end
56
+
57
+ send(:after_save, "process_n_save_#{photo_field}")
58
+ send(:after_destroy, "destroy_#{photo_field}")
59
+ end
60
+
12
61
  #Getter to check if model is enabled with photofied
13
62
  def is_photofield?
14
63
  @photofield_flag.nil? ? false : @photofield_flag
@@ -21,12 +70,12 @@ module Photofy
21
70
 
22
71
  #Generates photo filed from photo_field arguments and provides methods like
23
72
  #if photo_filed is "collage" then it provides methods on top of it as
24
- #collage -> Getter,
25
- #collage = -> Setter. Accepted inputs are file upload(ActionDispatch::Http::UploadedFile), filer handle and String(no format validation is ignored),
26
- #collage_path -> Getter of filepath,
27
- #collage_persisted? -> true if provided file/data is stored on disk,
28
- #collage_store! -> to store provided file/data on disk,
29
- #collage_destroy! -> to store destroy stored file/data from disk
73
+ #collage >> Getter,
74
+ #collage = >> Setter. Accepted inputs are file upload(ActionDispatch::Http::UploadedFile), filer handle and String(format validation is ignored),
75
+ #collage_path >> Getter of filepath,
76
+ #collage_persisted? >> true if provided file/data is stored on disk,
77
+ #collage_store! >> to store provided file/data on disk,
78
+ #collage_destroy! >> to store destroy stored file/data from disk
30
79
  def photofy(photo_filed, options = {})
31
80
  if options.is_a?(Hash)
32
81
  @photo_formats = options[:formats].is_a?(Array) ? options[:formats].collect { |x| x.starts_with?(".") ? x : ".#{x}" } : [".bmp", ".jpg", ".jpeg"]
@@ -84,8 +133,9 @@ module Photofy
84
133
  def photo_repository
85
134
  @photo_repository ||= FileUtils.mkdir_p File.join(Rails.root, "photofied", self.name)
86
135
  end
136
+
87
137
  end
88
138
 
89
139
  end
90
140
 
91
- ActiveRecord::Base.send(:include, Photofy)
141
+ ActiveRecord::Base.send(:include, Photofy)
metadata CHANGED
@@ -1,25 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: photofy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Praveen Kumar Sinha
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-02-27 00:00:00.000000000Z
11
+ date: 2012-03-15 00:00:00.000000000 Z
13
12
  dependencies: []
14
- description: ! "A gem to provide simple method to do fileupload of pictures and provides
15
- getter setter methods of it and save on model object commit.\n #Generates photo
16
- filed from photo_field arguments and provides methods like\n #if photo_filed
17
- is \"collage\" then it provides methods on top of it as\n #collage -> Getter,\n
18
- \ #collage = -> Setter. Accepted inputs are file upload(ActionDispatch::Http::UploadedFile),
19
- filer handle and String(no format validation is ignored),\n #collage_path ->
20
- Getter of filepath,\n #collage_persisted? -> true if provided file/data is stored
21
- on disk,\n #collage_store! -> to store provided file/data on disk,\n #collage_destroy!
22
- -> to store destroy stored file/data from disk"
13
+ description: |-
14
+ A gem to provide simple method to do file upload of pictures and provides getter setter methods of it and save on model object commit.
15
+ #Generates photo filed from photo_field arguments and provides methods like
16
+ #if photo_filed is "collage" then it provides methods on top of it as
17
+ #collage >> Getter,
18
+ #collage = >> Setter. Accepted inputs are file upload(ActionDispatch::Http::UploadedFile), filer handle and String(no format validation is ignored),
19
+ #collage_path >> Getter of filepath,
20
+ #collage_persisted? >> true if provided file/data is stored on disk,
21
+ #collage_store! >> to store provided file/data on disk,
22
+ #collage_destroy! >> to store destroy stored file/data from disk
23
23
  email: praveen.kumar.sinha@gmail.com
24
24
  executables: []
25
25
  extensions: []
@@ -28,26 +28,25 @@ files:
28
28
  - lib/photofy.rb
29
29
  homepage: https://github.com/praveenkumarsinha/Photofy
30
30
  licenses: []
31
+ metadata: {}
31
32
  post_install_message:
32
33
  rdoc_options: []
33
34
  require_paths:
34
35
  - lib
35
36
  required_ruby_version: !ruby/object:Gem::Requirement
36
- none: false
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  required_rubygems_version: !ruby/object:Gem::Requirement
42
- none: false
43
42
  requirements:
44
- - - ! '>='
43
+ - - '>='
45
44
  - !ruby/object:Gem::Version
46
45
  version: '0'
47
46
  requirements: []
48
47
  rubyforge_project:
49
- rubygems_version: 1.8.10
48
+ rubygems_version: 2.0.0.rc.2
50
49
  signing_key:
51
- specification_version: 3
50
+ specification_version: 4
52
51
  summary: Photofy
53
52
  test_files: []