Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GuruSP - Solucionando o problema de Uploads em Apps no Heroku

GuruSP - Solucionando o problema de Uploads em Apps no Heroku

Rafael Macedo

June 21, 2014
Tweet

More Decks by Rafael Macedo

Other Decks in Programming

Transcript

  1. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  2. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  3. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  4. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  5. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  6. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  7. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  8. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  9. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  10. ! ! ! ! Unicorn Rails AWS S3 Image Magick

    Browser ! ! ! ! Resque/Sidekiq Worker
  11. •JPG, PNG, GIF, BMP, ICO, TIFF and PDF •Secure HTTP

    upload API •Upload from your server or 
 directly from the browser
  12. {"public_id"=>"fe23qemppmcorq0grmfv",    "version"=>1403326723,    "signature"=>"4e1a7bb2e3f3eb05eed25eed10cb09807561a764",    "width"=>533,    "height"=>300,  

     "format"=>"jpg",    "resource_type"=>"image",    "created_at"=>"2014-­‐06-­‐21T04:58:43Z",    "bytes"=>13895,    "type"=>"upload",    "etag"=>"30b1c1b426db36b8e8c12d15d629fdb5",    "url"=>"http://res.cloudinary.com/hxjx3jqm7/image/upload/v1403326723/ fe23qemppmcorq0grmfv.jpg",    "secure_url"=>"https://res.cloudinary.com/hxjx3jqm7/image/upload/v1403326723/ fe23qemppmcorq0grmfv.jpg"}
  13. {"public_id"=>"fe23qemppmcorq0grmfv",    "version"=>1403326723,    "signature"=>"4e1a7bb2e3f3eb05eed25eed10cb09807561a764",    "width"=>533,    "height"=>300,  

     "format"=>"jpg",    "resource_type"=>"image",    "created_at"=>"2014-­‐06-­‐21T04:58:43Z",    "bytes"=>13895,    "type"=>"upload",    "etag"=>"30b1c1b426db36b8e8c12d15d629fdb5",    "url"=>"http://res.cloudinary.com/hxjx3jqm7/image/upload/v1403326723/ fe23qemppmcorq0grmfv.jpg",    "secure_url"=>"https://res.cloudinary.com/hxjx3jqm7/image/upload/v1403326723/ fe23qemppmcorq0grmfv.jpg"}
  14.  #  config/cloudinary.yml
 
    development:          cloud_name:

     “sample”          api_key:  “912739217312873”          api_secret:  “a123=asdaszad34dsf”  
  15. cl_image_tag(“e23qemppmcorq0grmfv.jpg”,                  

               width:  160,                                height:  160,                                crop:  fill,             effect:  ”sepia”   )
  16. cl_image_tag(“e23qemppmcorq0grmfv.jpg”,                  

                                                                                effect:   )
  17. cl_image_tag(“e23qemppmcorq0grmfv.jpg”,                  

               width:  100,                                height:  150,                                effect:  :pixelate)
  18. cl_image_tag(“e23qemppmcorq0grmfv.jpg”,                  

                                                                     
  19. cl_image_tag(“e23qemppmcorq0grmfv.jpg”,                  

                                                                     
  20. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  21. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  22. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  23. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  24. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  25. class  ImageUploader  <  CarrierWave::Uploader::Base      include  Cloudinary::CarrierWave    

           version  :standard  do          process  :resize_to_fill  =>  [100,  150,  :fill]       cloudinary_transformation  quality:  80      end            version  :thumbnail  do          process  :eager  =>  true          cloudinary_transformation  transformation:  [                {  width:  100,  height:  100,                  crop:  :thumb,  gravity:  :face  },          {  overlay:  ”watermark”,  width:  30,                  hgravity:  :south_east,  x:  5,  y:  5  }       ]      end             end
  26. =  form_for(:advertisement)  do  |f|      ...      

       =  cloudinary_js_config        =  f.cl_image_upload(:image)      ..
  27. =  form_for(:advertisement)  do  |f|      ...      

       =  cloudinary_js_config        =  f.cl_image_upload(:image)      ..
  28. =  form_for(:advertisement)  do  |f|      ...      

       =  cloudinary_js_config        =  f.cl_image_upload(:image)      ..
  29. $$$

  30. $35

  31. S3

  32. $7

  33. $7

  34. $42