mm-attach-it 0.1.2 → 0.1.3
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.
- data/README +23 -19
- data/README.rdoc +23 -19
- data/lib/attach_it/attach_it.rb +6 -4
- data/lib/attach_it/storage/filesystem.rb +1 -1
- data/lib/attach_it/storage/gridfs.rb +1 -1
- data/lib/attach_it/storage/storage.rb +20 -0
- data/lib/attach_it/version.rb +1 -1
- data/test/test_helper.rb +1 -1
- data/test/unit/test_attach_it.rb +1 -3
- metadata +4 -4
    
        data/README
    CHANGED
    
    | @@ -1,11 +1,15 @@ | |
| 1 1 | 
             
            = Mm-attach-it
         | 
| 2 2 |  | 
| 3 | 
            -
            Attach files (images, videos, pdfs, txts, zips and etc) to a MongoMapper record. You can choose  | 
| 3 | 
            +
            Attach files (images, videos, pdfs, txts, zips and etc) to a MongoMapper record. You can even choose to store them on file system or GridFS.
         | 
| 4 4 |  | 
| 5 5 | 
             
            == Install
         | 
| 6 6 |  | 
| 7 7 | 
             
              sudo gem install mm-attach-it
         | 
| 8 8 |  | 
| 9 | 
            +
            Or add it to your Rails’s Gemfile::
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              gem "mm-attach-it"
         | 
| 12 | 
            +
             | 
| 9 13 | 
             
            == Usage
         | 
| 10 14 |  | 
| 11 15 | 
             
            === Model
         | 
| @@ -19,7 +23,7 @@ Declare the plugin and use the attachment method to make attachments. | |
| 19 23 | 
             
                has_attachment :photo
         | 
| 20 24 | 
             
              end
         | 
| 21 25 |  | 
| 22 | 
            -
            The default storage is the file system, if you want to change  | 
| 26 | 
            +
            The default storage destination is the file system, if you want to change it to GridFS you should add the following: 
         | 
| 23 27 |  | 
| 24 28 | 
             
              class Bar
         | 
| 25 29 | 
             
                include MongoMapper::Document
         | 
| @@ -28,7 +32,7 @@ The default storage is the file system, if you want to change for GridFS you sho | |
| 28 32 | 
             
                has_attachment :photo, { :storage => 'gridfs' }
         | 
| 29 33 | 
             
              end
         | 
| 30 34 |  | 
| 31 | 
            -
            If you want to resize the images (you can store resized images on both: file  | 
| 35 | 
            +
            If you want to resize the images (you can store resized images on both: file systems or GridFS): 
         | 
| 32 36 |  | 
| 33 37 | 
             
              class Foo
         | 
| 34 38 | 
             
                include MongoMapper::Document
         | 
| @@ -37,7 +41,7 @@ If you want to resize the images (you can store resized images on both: file sys | |
| 37 41 | 
             
                has_attachment :photo, { :styles => { :small => '100x100>', :medium => '200x200>' } }
         | 
| 38 42 | 
             
              end
         | 
| 39 43 |  | 
| 40 | 
            -
            If you want to validate the attached file (again you can validate  | 
| 44 | 
            +
            If you want to validate the attached file (again, you can validate attachments on both: file system or GridFS):
         | 
| 41 45 |  | 
| 42 46 | 
             
              class Foo
         | 
| 43 47 | 
             
                include MongoMapper::Document
         | 
| @@ -46,13 +50,13 @@ If you want to validate the attached file (again you can validate attaches on bo | |
| 46 50 | 
             
                has_attch :photo
         | 
| 47 51 |  | 
| 48 52 | 
             
                validates_attachment_presence :photo
         | 
| 49 | 
            -
                validates_attachment_content_type: | 
| 53 | 
            +
                validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/gif', 'image/png']
         | 
| 50 54 | 
             
                validates_attachment_size :photo, { :less_than => 1.megabyte, :greater_than => 500.kilobytes }
         | 
| 51 55 | 
             
              end
         | 
| 52 56 |  | 
| 53 | 
            -
            OBS: But remember | 
| 57 | 
            +
            OBS: But remember! You can attach any desirable file.
         | 
| 54 58 |  | 
| 55 | 
            -
            If you are using the file system to store  | 
| 59 | 
            +
            If you are using the file system to store files, you can specify the directory/folder to store them.
         | 
| 56 60 |  | 
| 57 61 | 
             
              class Foo
         | 
| 58 62 | 
             
                include MongoMapper::Document
         | 
| @@ -61,13 +65,13 @@ If you are using the file system to store the files you can specify the storage | |
| 61 65 | 
             
                has_attachment :photo, { :path => '/:rails_root/public/images/foos/:id/:style/:filename' }
         | 
| 62 66 | 
             
              end
         | 
| 63 67 |  | 
| 64 | 
            -
            OBS: The default directory is  | 
| 68 | 
            +
            OBS: The default directory is ’/:rails_root/public/system/:attachment/:id/:style/:filename’
         | 
| 65 69 |  | 
| 66 70 | 
             
            Where:
         | 
| 67 71 | 
             
            * :rails_root - is the root directory of your Rails application
         | 
| 68 72 | 
             
            * :environment - can be "production", "test" or "development"
         | 
| 69 | 
            -
            * :class - the name of the class ( | 
| 70 | 
            -
            * :attachment - is the name of the column | 
| 73 | 
            +
            * :class - the name of the class (in the example given above, ‘foo’) 
         | 
| 74 | 
            +
            * :attachment - is the name of the column’s collection (in the example given above, ‘photo’) 
         | 
| 71 75 | 
             
            * :id - the "id" of the record on MongoDB
         | 
| 72 76 | 
             
            * :style - if you specified the styles
         | 
| 73 77 | 
             
            * :filename - the name of the file
         | 
| @@ -83,19 +87,19 @@ Check the model below | |
| 83 87 |  | 
| 84 88 | 
             
                # on file system
         | 
| 85 89 | 
             
                has_attachment :photo, { 
         | 
| 86 | 
            -
                  : | 
| 90 | 
            +
                  :styles => { :thumb => '100x100>' },
         | 
| 87 91 | 
             
                  :url => '/assets/groups/:id/:style/:filename', 
         | 
| 88 | 
            -
                  :path => '/:rails_root/public/image/foos/:id/:style/:filename' | 
| 92 | 
            +
                  :path => '/:rails_root/public/image/foos/:id/:style/:filename'
         | 
| 89 93 | 
             
                }
         | 
| 90 94 |  | 
| 91 95 | 
             
                # on GridFS
         | 
| 92 96 | 
             
                has_attachment :avatar, {
         | 
| 93 | 
            -
                  : | 
| 97 | 
            +
                  :styles => { :thumb => '100x100>' }, 
         | 
| 94 98 | 
             
                  :storage => 'gridfs', 
         | 
| 95 99 | 
             
                }
         | 
| 96 100 | 
             
              end
         | 
| 97 101 |  | 
| 98 | 
            -
             | 
| 102 | 
            +
            Within forms you must set the "multipart" option and the field as "file_field":
         | 
| 99 103 |  | 
| 100 104 | 
             
              <%= form_for(@foo, :html => { :multipart => true }) do |f| %>
         | 
| 101 105 |  | 
| @@ -115,7 +119,7 @@ On form you must set the "multipart" option and the field as "file_field": | |
| 115 119 | 
             
              <% end %>
         | 
| 116 120 |  | 
| 117 121 |  | 
| 118 | 
            -
             | 
| 122 | 
            +
            Regardless of using the file system or GridFS the safest way to present the images is using Base64.
         | 
| 119 123 |  | 
| 120 124 | 
             
              <img src="<%= foo.photo.base64 %>">
         | 
| 121 125 | 
             
              <img src="<%= foo.photo.base64('thumb') %>">
         | 
| @@ -123,16 +127,16 @@ The safest way to show the images is using Base64, doesn't matter if you are usi | |
| 123 127 | 
             
              <img src="<%= foo.avatar.base64 %>">
         | 
| 124 128 | 
             
              <img src="<%= foo.avatar.base64('thumb') %>">
         | 
| 125 129 |  | 
| 126 | 
            -
            Also,  | 
| 130 | 
            +
            Also, specifically when using the file system, if you specify the ‘url’ option, you can do:
         | 
| 127 131 |  | 
| 128 132 | 
             
              <%= image_tag foo.photo.url %>
         | 
| 129 133 | 
             
              <%= image_tag foo.photo.url('thumb') %>
         | 
| 130 134 |  | 
| 131 135 | 
             
            === Controller
         | 
| 132 136 |  | 
| 133 | 
            -
            If you are using the GridFS to store  | 
| 137 | 
            +
            If you are using the GridFS to store files, and you don’t want to use Base64 data to present the images, you’ve got to create an action on a controller.
         | 
| 134 138 |  | 
| 135 | 
            -
            But first create a new route on the route | 
| 139 | 
            +
            But first create a new route on the route’s file:
         | 
| 136 140 |  | 
| 137 141 | 
             
              match '/foos/avatar/:id(/:style)', :to => 'foos#avatar'
         | 
| 138 142 |  | 
| @@ -153,7 +157,7 @@ Now the controller: | |
| 153 157 |  | 
| 154 158 | 
             
              end
         | 
| 155 159 |  | 
| 156 | 
            -
            And the view do that:
         | 
| 160 | 
            +
            And, for the view, do that:
         | 
| 157 161 |  | 
| 158 162 | 
             
              <%= image_tag  "/foos/avatar/#{foo.id.to_s}/small" %>
         | 
| 159 163 |  | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -1,11 +1,15 @@ | |
| 1 1 | 
             
            = Mm-attach-it
         | 
| 2 2 |  | 
| 3 | 
            -
            Attach files (images, videos, pdfs, txts, zips and etc) to a MongoMapper record. You can choose  | 
| 3 | 
            +
            Attach files (images, videos, pdfs, txts, zips and etc) to a MongoMapper record. You can even choose to store them on file system or GridFS.
         | 
| 4 4 |  | 
| 5 5 | 
             
            == Install
         | 
| 6 6 |  | 
| 7 7 | 
             
              sudo gem install mm-attach-it
         | 
| 8 8 |  | 
| 9 | 
            +
            Or add it to your Rails’s Gemfile::
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              gem "mm-attach-it"
         | 
| 12 | 
            +
             | 
| 9 13 | 
             
            == Usage
         | 
| 10 14 |  | 
| 11 15 | 
             
            === Model
         | 
| @@ -19,7 +23,7 @@ Declare the plugin and use the attachment method to make attachments. | |
| 19 23 | 
             
                has_attachment :photo
         | 
| 20 24 | 
             
              end
         | 
| 21 25 |  | 
| 22 | 
            -
            The default storage is the file system, if you want to change  | 
| 26 | 
            +
            The default storage destination is the file system, if you want to change it to GridFS you should add the following: 
         | 
| 23 27 |  | 
| 24 28 | 
             
              class Bar
         | 
| 25 29 | 
             
                include MongoMapper::Document
         | 
| @@ -28,7 +32,7 @@ The default storage is the file system, if you want to change for GridFS you sho | |
| 28 32 | 
             
                has_attachment :photo, { :storage => 'gridfs' }
         | 
| 29 33 | 
             
              end
         | 
| 30 34 |  | 
| 31 | 
            -
            If you want to resize the images (you can store resized images on both: file  | 
| 35 | 
            +
            If you want to resize the images (you can store resized images on both: file systems or GridFS): 
         | 
| 32 36 |  | 
| 33 37 | 
             
              class Foo
         | 
| 34 38 | 
             
                include MongoMapper::Document
         | 
| @@ -37,7 +41,7 @@ If you want to resize the images (you can store resized images on both: file sys | |
| 37 41 | 
             
                has_attachment :photo, { :styles => { :small => '100x100>', :medium => '200x200>' } }
         | 
| 38 42 | 
             
              end
         | 
| 39 43 |  | 
| 40 | 
            -
            If you want to validate the attached file (again you can validate  | 
| 44 | 
            +
            If you want to validate the attached file (again, you can validate attachments on both: file system or GridFS):
         | 
| 41 45 |  | 
| 42 46 | 
             
              class Foo
         | 
| 43 47 | 
             
                include MongoMapper::Document
         | 
| @@ -46,13 +50,13 @@ If you want to validate the attached file (again you can validate attaches on bo | |
| 46 50 | 
             
                has_attch :photo
         | 
| 47 51 |  | 
| 48 52 | 
             
                validates_attachment_presence :photo
         | 
| 49 | 
            -
                validates_attachment_content_type: | 
| 53 | 
            +
                validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/gif', 'image/png']
         | 
| 50 54 | 
             
                validates_attachment_size :photo, { :less_than => 1.megabyte, :greater_than => 500.kilobytes }
         | 
| 51 55 | 
             
              end
         | 
| 52 56 |  | 
| 53 | 
            -
            OBS: But remember | 
| 57 | 
            +
            OBS: But remember! You can attach any desirable file.
         | 
| 54 58 |  | 
| 55 | 
            -
            If you are using the file system to store  | 
| 59 | 
            +
            If you are using the file system to store files, you can specify the directory/folder to store them.
         | 
| 56 60 |  | 
| 57 61 | 
             
              class Foo
         | 
| 58 62 | 
             
                include MongoMapper::Document
         | 
| @@ -61,13 +65,13 @@ If you are using the file system to store the files you can specify the storage | |
| 61 65 | 
             
                has_attachment :photo, { :path => '/:rails_root/public/images/foos/:id/:style/:filename' }
         | 
| 62 66 | 
             
              end
         | 
| 63 67 |  | 
| 64 | 
            -
            OBS: The default directory is  | 
| 68 | 
            +
            OBS: The default directory is ’/:rails_root/public/system/:attachment/:id/:style/:filename’
         | 
| 65 69 |  | 
| 66 70 | 
             
            Where:
         | 
| 67 71 | 
             
            * :rails_root - is the root directory of your Rails application
         | 
| 68 72 | 
             
            * :environment - can be "production", "test" or "development"
         | 
| 69 | 
            -
            * :class - the name of the class ( | 
| 70 | 
            -
            * :attachment - is the name of the column | 
| 73 | 
            +
            * :class - the name of the class (in the example given above, ‘foo’) 
         | 
| 74 | 
            +
            * :attachment - is the name of the column’s collection (in the example given above, ‘photo’) 
         | 
| 71 75 | 
             
            * :id - the "id" of the record on MongoDB
         | 
| 72 76 | 
             
            * :style - if you specified the styles
         | 
| 73 77 | 
             
            * :filename - the name of the file
         | 
| @@ -83,19 +87,19 @@ Check the model below | |
| 83 87 |  | 
| 84 88 | 
             
                # on file system
         | 
| 85 89 | 
             
                has_attachment :photo, { 
         | 
| 86 | 
            -
                  : | 
| 90 | 
            +
                  :styles => { :thumb => '100x100>' },
         | 
| 87 91 | 
             
                  :url => '/assets/groups/:id/:style/:filename', 
         | 
| 88 | 
            -
                  :path => '/:rails_root/public/image/foos/:id/:style/:filename' | 
| 92 | 
            +
                  :path => '/:rails_root/public/image/foos/:id/:style/:filename'
         | 
| 89 93 | 
             
                }
         | 
| 90 94 |  | 
| 91 95 | 
             
                # on GridFS
         | 
| 92 96 | 
             
                has_attachment :avatar, {
         | 
| 93 | 
            -
                  : | 
| 97 | 
            +
                  :styles => { :thumb => '100x100>' }, 
         | 
| 94 98 | 
             
                  :storage => 'gridfs', 
         | 
| 95 99 | 
             
                }
         | 
| 96 100 | 
             
              end
         | 
| 97 101 |  | 
| 98 | 
            -
             | 
| 102 | 
            +
            Within forms you must set the "multipart" option and the field as "file_field":
         | 
| 99 103 |  | 
| 100 104 | 
             
              <%= form_for(@foo, :html => { :multipart => true }) do |f| %>
         | 
| 101 105 |  | 
| @@ -115,7 +119,7 @@ On form you must set the "multipart" option and the field as "file_field": | |
| 115 119 | 
             
              <% end %>
         | 
| 116 120 |  | 
| 117 121 |  | 
| 118 | 
            -
             | 
| 122 | 
            +
            Regardless of using the file system or GridFS the safest way to present the images is using Base64.
         | 
| 119 123 |  | 
| 120 124 | 
             
              <img src="<%= foo.photo.base64 %>">
         | 
| 121 125 | 
             
              <img src="<%= foo.photo.base64('thumb') %>">
         | 
| @@ -123,16 +127,16 @@ The safest way to show the images is using Base64, doesn't matter if you are usi | |
| 123 127 | 
             
              <img src="<%= foo.avatar.base64 %>">
         | 
| 124 128 | 
             
              <img src="<%= foo.avatar.base64('thumb') %>">
         | 
| 125 129 |  | 
| 126 | 
            -
            Also,  | 
| 130 | 
            +
            Also, specifically when using the file system, if you specify the ‘url’ option, you can do:
         | 
| 127 131 |  | 
| 128 132 | 
             
              <%= image_tag foo.photo.url %>
         | 
| 129 133 | 
             
              <%= image_tag foo.photo.url('thumb') %>
         | 
| 130 134 |  | 
| 131 135 | 
             
            === Controller
         | 
| 132 136 |  | 
| 133 | 
            -
            If you are using the GridFS to store  | 
| 137 | 
            +
            If you are using the GridFS to store files, and you don’t want to use Base64 data to present the images, you’ve got to create an action on a controller.
         | 
| 134 138 |  | 
| 135 | 
            -
            But first create a new route on the route | 
| 139 | 
            +
            But first create a new route on the route’s file:
         | 
| 136 140 |  | 
| 137 141 | 
             
              match '/foos/avatar/:id(/:style)', :to => 'foos#avatar'
         | 
| 138 142 |  | 
| @@ -153,7 +157,7 @@ Now the controller: | |
| 153 157 |  | 
| 154 158 | 
             
              end
         | 
| 155 159 |  | 
| 156 | 
            -
            And the view do that:
         | 
| 160 | 
            +
            And, for the view, do that:
         | 
| 157 161 |  | 
| 158 162 | 
             
              <%= image_tag  "/foos/avatar/#{foo.id.to_s}/small" %>
         | 
| 159 163 |  | 
    
        data/lib/attach_it/attach_it.rb
    CHANGED
    
    | @@ -7,7 +7,7 @@ module AttachIt | |
| 7 7 |  | 
| 8 8 | 
             
              module ClassMethods
         | 
| 9 9 | 
             
                def has_attachment(name, options = {})
         | 
| 10 | 
            -
                  options.symbolize_keys | 
| 10 | 
            +
                  options = options.symbolize_keys
         | 
| 11 11 | 
             
                  name = name.to_sym
         | 
| 12 12 |  | 
| 13 13 | 
             
                  after_save     :save_attachments
         | 
| @@ -25,7 +25,7 @@ module AttachIt | |
| 25 25 | 
             
                  define_method("#{name}") do
         | 
| 26 26 | 
             
                    information_for(name, options)
         | 
| 27 27 | 
             
                  end
         | 
| 28 | 
            -
             | 
| 28 | 
            +
              
         | 
| 29 29 | 
             
                  validates_each name, :logic => lambda { information_for(name, options).send(:flush_errors) }
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| @@ -74,8 +74,10 @@ module AttachIt | |
| 74 74 | 
             
                end
         | 
| 75 75 |  | 
| 76 76 | 
             
                def destroy_attachments
         | 
| 77 | 
            -
                  @attachment_options. | 
| 78 | 
            -
                    @attachment_options | 
| 77 | 
            +
                  unless @attachment_options.nil?
         | 
| 78 | 
            +
                    @attachment_options.keys.each do |name|
         | 
| 79 | 
            +
                      @attachment_options[name].delete
         | 
| 80 | 
            +
                    end
         | 
| 79 81 | 
             
                  end
         | 
| 80 82 | 
             
                end
         | 
| 81 83 |  | 
| @@ -4,7 +4,7 @@ class Filesystem < Storage | |
| 4 4 | 
             
                image_options.styles.each do |style_name, style_value|
         | 
| 5 5 | 
             
                  begin        
         | 
| 6 6 | 
             
                    FileUtils.mkdir_p(File.dirname(image_options.path(style_name)))
         | 
| 7 | 
            -
                     | 
| 7 | 
            +
                    transform(style_value, image_options.assigned_file.path).write(image_options.path(style_name)) 
         | 
| 8 8 | 
             
                    FileUtils.chmod(0644, image_options.path(style_name))
         | 
| 9 9 | 
             
                  rescue Exception => exception
         | 
| 10 10 | 
             
                    image_options.add_error(exception.to_s)
         | 
| @@ -7,7 +7,7 @@ class Gridfs < Storage | |
| 7 7 | 
             
              def flush_write(image_options = nil)
         | 
| 8 8 | 
             
                image_options.styles.each do |style_name, style_value|
         | 
| 9 9 | 
             
                  begin
         | 
| 10 | 
            -
                    gridfs_id = @grid.put( | 
| 10 | 
            +
                    gridfs_id = @grid.put(transform(style_value, image_options.assigned_file.path).to_blob, :filename => style_name.to_s + '_' + image_options.file_name, :_id => "#{image_options.object_id}_#{image_options.name}_#{style_name}")
         | 
| 11 11 | 
             
                  rescue Exception => exception
         | 
| 12 12 | 
             
                    image_options.add_error(exception.to_s)
         | 
| 13 13 | 
             
                  end
         | 
| @@ -2,9 +2,29 @@ require 'RMagick' | |
| 2 2 |  | 
| 3 3 | 
             
            class Storage
         | 
| 4 4 |  | 
| 5 | 
            +
              def transform(style_value = nil, filename = nil)
         | 
| 6 | 
            +
                style_value.gsub!(/\s+/, '')
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                if style_value.match(/^(\d+)x(\d+)\#$/)
         | 
| 9 | 
            +
                  crop($1.to_i, $2.to_i, filename)
         | 
| 10 | 
            +
                else
         | 
| 11 | 
            +
                  resize(style_value, filename)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              private
         | 
| 5 16 | 
             
              def resize(style_value = nil, filename = nil)
         | 
| 6 17 | 
             
                new_image = Magick::Image.read(filename).first
         | 
| 7 18 | 
             
                new_image.change_geometry!(style_value) { |cols, rows, img| img.resize!(cols, rows) }
         | 
| 19 | 
            +
                new_image
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              def crop(new_width = nil, new_height = nil, filename = nil)
         | 
| 23 | 
            +
                new_image = Magick::Image.read(filename).first
         | 
| 24 | 
            +
                width = new_image.columns
         | 
| 25 | 
            +
                height = new_image.rows
         | 
| 26 | 
            +
                new_image.crop!(width/2 - new_width/2, height/2 - new_height/2, new_width, new_height)
         | 
| 27 | 
            +
                new_image
         | 
| 8 28 | 
             
              end
         | 
| 9 29 |  | 
| 10 30 | 
             
            end
         | 
    
        data/lib/attach_it/version.rb
    CHANGED
    
    
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ require 'tempfile' | |
| 3 3 | 
             
            require 'mongo_mapper'
         | 
| 4 4 | 
             
            require 'shoulda'
         | 
| 5 5 | 
             
            require 'mocha'
         | 
| 6 | 
            -
            require File.expand_path(File.dirname(__FILE__) + '/../lib/ | 
| 6 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../lib/mm-attach-it')
         | 
| 7 7 |  | 
| 8 8 | 
             
            MongoMapper.database = "testing_mm_attach_it"
         | 
| 9 9 |  | 
    
        data/test/unit/test_attach_it.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: mm-attach-it
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 29
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 1
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.1. | 
| 9 | 
            +
              - 3
         | 
| 10 | 
            +
              version: 0.1.3
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Adilson Chacon
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011- | 
| 18 | 
            +
            date: 2011-06-26 00:00:00 Z
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 21 21 | 
             
              name: wand
         |