smallseo.info

carrierwave

Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks carrierwaveuploader/carrierwave · GitHub carrierwave - classier solution for file uploads for rails, sinatra and other ruby web frameworks

Displaying a Carrierwave filename in the view

I am trying to display the filename of a Carrierwave attachment in a Rails erb template. The following does not work:

<%= @page.form.filename %>

This seems in line with the documentation. Is some additional step needed?

My page model looks like this:

class Page < ActiveRecord::Base

  mount_uploader :form, FormUploader

end

The form uploader looks like this:

class FormUploader < CarrierWave::Uploader::Base

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(pdf)
  end

end

Source: (StackOverflow)

Validate image size in carrierwave uploader

All uploads should be at least 150x150 pixels. How to validate it with Carrierwave?


Source: (StackOverflow)

Undefined Method Scale In CarrierWave

I'm trying to use this code in my uploader

  version :thumb do
    process :scale => [50, 50]
  end

and I get an error saying

undefined method `scale' for #<#<Class:0x235b680>:0x0fb4c8>

I'm using Carrierwave with MiniMagick. How can I fix this error?


Source: (StackOverflow)

Configure Environment to Use File System Locally and Amazon on Heroku

I am not sure how to configure the environment such that Carrier Wave will use the local file storage when running the app locally (development) and s3 after i load to heroku (production)

in Development storage :file

in Production storage :s3


Source: (StackOverflow)

Reprocessing images in Carrierwave

Let's say my model has an image with :thumb and the client wants :tiny and :nano thumbnails.

How do I reprocess all the existing images using a rake task?

I've found a rask that I thought would do it https://gist.github.com/777788 but it's giving me errors.


Source: (StackOverflow)

Undefined method `image_will_change!' for CarrierWave on Heroku

I have a simple model that mounts a Carrierwave uploader. Everything works fine in development, but I get an undefined method "image_will_change!" error on heroku.

class Receipt < ActiveRecord::Base
  mount_uploader :image, ImageUploader
end

class ImageUploader < CarrierWave::Uploader::Base
  storage :fog
  def store_dir
    "receipts/saved"
  end
end

I have the cache_dir set appropriately as well according to the Carrierwave Wiki.

receipt.image = File.open "public/images/test.jpg" #works fine in development, fails in heroku

Source: (StackOverflow)

carrierwave - rails 3.1- undefined method: image_will_change

I get an error that look like this:

undefined method `post_image_will_change!' for #<Post:0xf4e9184>
app/controllers/posts_controller.rb:43:in `new'
app/controllers/posts_controller.rb:43:in `create'

I've included this in my "post" model:

 attr_accessible :title, :name, :content, :post_image
 mount_uploader :post_image, PostImageUploader

and in _form.html.erb I've added:

 :html =>  { :multipart => true }

I looked CarrierWave Error but that doesn't help me.

Any clues of what generates that error? I've migrated the database and so forth (followed the railscasts guide on carrierwave exactly..)


Source: (StackOverflow)

Rails 3 test fixtures with carrierwave?

I'm working on upgrading from attachment_fu to carrierwave, since attachment_fu is broken in rails 3.

None of the tests are able to run, because we have invalid fixtures that were using the syntax from attachment_fu for attachment files.

For example, we have a Post model that has one PostAttachment. Here's what the data in the PostAttachment fixture looks like:

a_image:
  post_id: 1
  attachment_file: <%= Rails.root>/test/files/test.png

And this is the error I'm getting:

ActiveRecord::StatementInvalid: PGError: ERROR:  column "attachment_file" of relation "post_attachments" does not exist
LINE 1: INSERT INTO "post_attachments" ("post_id", "attachment_file"...

attachment_file would have been picked up by attachment_fu, and it would have taken care of all the processing to create the attachment_fu attachment for the model.

Is there a way to have image attachments in the fixtures, but with using CarrierWave instead?


Source: (StackOverflow)

Heading into 2013, should I go with Dragonfly or Paperclip or Carrierwave? [closed]

I am just another average joe hoping to jump onto the social network bandwagon. I'd like to know which photo uploading/resizing gem I should use for users of my app. It would be great if you could explain why.


Source: (StackOverflow)

rmagick leads to server shutdown

everyone! I was following Railscasts episode #253, using CarrierWave to do image upload.

Everything was fine to display the original image, even though the image looked quite big in the browser.

I strictly followed Ryan Bates' instructions. But, when I tried to resize the image using rmagick and press upload button, I always got server shutdown. I am using rmagick 2.13.1 And I followed this blog's instruction to install homebrew, and imagemagick on my mac.

The error message is shown below.

    Rendered /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-

3.0.9/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.9ms)
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:248: [BUG] Segmentation fault
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]

-- control frame ----------
c:0097 p:---- s:0482 b:0482 l:000481 d:000481 CFUNC  :read
c:0096 p:0054 s:0478 b:0478 l:000477 d:000477 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:248
c:0095 p:0011 s:0469 b:0469 l:000468 d:000468 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:132
c:0094 p:0044 s:0464 b:0464 l:000453 d:000463 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/processing.rb:83
c:0093 p:---- s:0459 b:0459 l:000458 d:000458 FINISH
c:0092 p:---- s:0457 b:0457 l:000456 d:000456 CFUNC  :each
c:0091 p:0037 s:0454 b:0454 l:000453 d:000453 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/processing.rb:81
c:0090 p:0015 s:0450 b:0450 l:000441 d:000449 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18
c:0089 p:---- s:0447 b:0447 l:000446 d:000446 FINISH
c:0088 p:---- s:0445 b:0445 l:000444 d:000444 CFUNC  :each
c:0087 p:0059 s:0442 b:0442 l:000441 d:000441 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18
c:0086 p:0091 s:0437 b:0437 l:000436 d:000436 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/cache.rb:107
c:0085 p:0035 s:0433 b:0433 l:000423 d:000432 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/versions.rb:215
c:0084 p:---- s:0429 b:0429 l:000428 d:000428 FINISH
c:0083 p:---- s:0427 b:0427 l:000426 d:000426 CFUNC  :each
c:0082 p:0055 s:0424 b:0424 l:000423 d:000423 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/versions.rb:213
c:0081 p:0015 s:0419 b:0419 l:000410 d:000418 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18
c:0080 p:---- s:0416 b:0416 l:000415 d:000415 FINISH
c:0079 p:---- s:0414 b:0414 l:000413 d:000413 CFUNC  :each
c:0078 p:0059 s:0411 b:0411 l:000410 d:000410 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18
c:0077 p:0091 s:0406 b:0406 l:000405 d:000405 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/cache.rb:107
c:0076 p:0019 s:0402 b:0402 l:000401 d:000401 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/mount.rb:317
c:0075 p:0021 s:0397 b:0397 l:000396 d:000396 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/mount.rb:173
c:0074 p:0054 s:0393 b:0393 l:000392 d:000392 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/orm/activerecord.rb:37
c:0073 p:0081 s:0388 b:0388 l:000378 d:000387 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1564
c:0072 p:---- s:0384 b:0384 l:000383 d:000383 FINISH
c:0071 p:---- s:0382 b:0382 l:000381 d:000381 CFUNC  :each
c:0070 p:0076 s:0379 b:0379 l:000378 d:000378 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1560
c:0069 p:0107 s:0372 b:0372 l:000371 d:000371 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1412
c:0068 p:---- s:0367 b:0367 l:000366 d:000366 FINISH
c:0067 p:---- s:0365 b:0365 l:000364 d:000364 CFUNC  :new
c:0066 p:0028 s:0361 b:0361 l:000360 d:000360 METHOD /Users/binyannie/rails/gallery_app/app/controllers/paintings_controller.rb:12
c:0065 p:0012 s:0358 b:0358 l:000357 d:000357 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/implicit_render.rb:4
c:0064 p:0015 s:0353 b:0353 l:000352 d:000352 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:150
c:0063 p:0041 s:0348 b:0348 l:000347 d:000347 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rendering.rb:11
c:0062 p:0012 s:0344 b:0344 l:002268 d:000343 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:18
c:0061 p:0063 s:0342 b:0342 l:000341 d:000341 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:436
c:0060 p:0113 s:0336 b:0336 l:000335 d:000335 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:410
c:0059 p:0024 s:0327 b:0327 l:000326 d:000326 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:94
c:0058 p:0020 s:0321 b:0321 l:002268 d:002268 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:17
c:0057 p:0012 s:0316 b:0316 l:000297 d:000315 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:30
c:0056 p:0017 s:0312 b:0312 l:000302 d:000311 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52
c:0055 p:0032 s:0310 b:0310 l:000309 d:000309 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications/instrumenter.rb:21
c:0054 p:0036 s:0303 b:0303 l:000302 d:000302 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52
c:0053 p:0152 s:0298 b:0298 l:000297 d:000297 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:29
c:0052 p:0012 s:0292 b:0292 l:000291 d:000291 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rescue.rb:17
c:0051 p:0093 s:0287 b:0287 l:000286 d:000286 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:119
c:0050 p:0084 s:0281 b:0281 l:000280 d:000280 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/rendering.rb:41
c:0049 p:0048 s:0276 b:0276 l:000275 d:000275 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal.rb:138
c:0048 p:0086 s:0271 b:0271 l:000270 d:000270 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rack_delegation.rb:14
c:0047 p:0030 s:0265 b:0265 l:000418 d:000264 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal.rb:178
c:0046 p:---- s:0262 b:0262 l:000261 d:000261 FINISH
c:0045 p:---- s:0260 b:0260 l:000259 d:000259 CFUNC  :call
c:0044 p:0022 s:0256 b:0256 l:000255 d:000255 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:62
c:0043 p:0094 s:0250 b:0250 l:000249 d:000249 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:27
c:0042 p:0097 s:0244 b:0244 l:000216 d:000243 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb:148
c:0041 p:0014 s:0238 b:0238 l:000222 d:000237 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:93
c:0040 p:0189 s:0233 b:0233 l:000232 d:000232 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:68
c:0039 p:0198 s:0223 b:0223 l:000222 d:000222 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:92
c:0038 p:0092 s:0217 b:0217 l:000216 d:000216 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb:139
c:0037 p:0025 s:0211 b:0211 l:000210 d:000210 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:493
c:0036 p:0015 s:0207 b:0207 l:000206 d:000206 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/best_standards_support.rb:17
c:0035 p:0093 s:0200 b:0200 l:000199 d:000199 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/head.rb:14
c:0034 p:0155 s:0193 b:0193 l:000192 d:000192 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/methodoverride.rb:24
c:0033 p:0046 s:0187 b:0187 l:000186 d:000186 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/params_parser.rb:21
c:0032 p:0054 s:0182 b:0182 l:000181 d:000181 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/flash.rb:182
c:0031 p:0027 s:0175 b:0175 l:000174 d:000174 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/session/abstract_store.rb:149
c:0030 p:0015 s:0164 b:0164 l:000163 d:000163 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/cookies.rb:302
c:0029 p:0014 s:0156 b:0156 l:0016a0 d:000155 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:32
c:0028 p:0019 s:0154 b:0154 l:000153 d:000153 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/query_cache.r
c:0027 p:0051 s:0150 b:0150 l:000149 d:000149 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:12
c:0026 p:0019 s:0146 b:0146 l:0016a0 d:0016a0 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:31
c:0025 p:0015 s:0142 b:0142 l:000141 d:000141 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/connection_po
c:0024 p:0029 s:0138 b:0138 l:001660 d:000137 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:46
c:0023 p:0155 s:0136 b:0136 l:000135 d:000135 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:416
c:0022 p:0011 s:0126 b:0126 l:001660 d:001660 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:44
c:0021 p:0015 s:0122 b:0122 l:000121 d:000121 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/sendfile.rb:107
c:0020 p:0049 s:0112 b:0112 l:000111 d:000111 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/remote_ip.rb:48
c:0019 p:0017 s:0108 b:0108 l:000107 d:000107 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/show_exceptions.rb:47
c:0018 p:0027 s:0100 b:0100 l:000099 d:000099 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/rack/logger.rb:13
c:0017 p:0032 s:0096 b:0096 l:000095 d:000095 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/runtime.rb:17
c:0016 p:0052 s:0087 b:0087 l:000086 d:000086 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/cache/strategy/local_cache.rb:72
c:0015 p:0014 s:0083 b:0083 l:000077 d:000082 BLOCK  /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/lock.rb:11
c:0014 p:0019 s:0081 b:0081 l:000080 d:000080 METHOD <internal:prelude>:10
c:0013 p:0054 s:0078 b:0078 l:000077 d:000077 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/lock.rb:11
c:0012 p:0193 s:0073 b:0073 l:000072 d:000072 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/static.rb:30
c:0011 p:0032 s:0066 b:0066 l:000065 d:000065 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/application.rb:168
c:0010 p:0021 s:0062 b:0062 l:000061 d:000061 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/application.rb:77
c:0009 p:---- s:0057 b:0057 l:000056 d:000056 FINISH
c:0008 p:0015 s:0055 b:0055 l:000054 d:000054 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/rack/log_tailer.rb:14
c:0007 p:0015 s:0050 b:0050 l:000049 d:000049 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/content_length.rb:13
c:0006 p:0338 s:0042 b:0042 l:000041 d:000041 METHOD /Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52
c:0005 p:0257 s:0030 b:0030 l:000029 d:000029 METHOD /Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111
c:0004 p:0393 s:0020 b:0020 l:000019 d:000019 METHOD /Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70
c:0003 p:0126 s:0009 b:0009 l:0023e8 d:000008 BLOCK  /Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:---- s:0002 b:0002 l:000001 d:000001 TOP   
---------------------------
-- Ruby level backtrace information ----------------------------------------
/Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
/Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/Users/binyannie/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/rack/log_tailer.rb:14:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/application.rb:168:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/static.rb:30:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/lock.rb:11:in `call'
<internal:prelude>:10:in `synchronize'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/lock.rb:11:in `block in call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/runtime.rb:17:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.9/lib/rails/rack/logger.rb:13:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/sendfile.rb:107:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:31:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:12:in `cache'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:32:in `block in call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/cookies.rb:302:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/flash.rb:182:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.2.3/lib/rack/methodoverride.rb:24:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/head.rb:14:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:493:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb:139:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:92:in `recognize'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:68:in `optimized_each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/code_generation.rb:93:in `block in recognize'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/rack-mount-0.6.14/lib/rack/mount/route_set.rb:148:in `block in call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:27:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:62:in `call'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal.rb:178:in `block in action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal.rb:138:in `dispatch'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/rendering.rb:41:in `process'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:119:in `process'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rescue.rb:17:in `process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52:in `instrument'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52:in `block in instrument'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:17:in `process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:94:in `run_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:436:in `_run__2758521140015343666__process_action__523965677563374240__callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/rendering.rb:11:in `process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:150:in `process_action'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/Users/binyannie/rails/gallery_app/app/controllers/paintings_controller.rb:12:in `create'
/Users/binyannie/rails/gallery_app/app/controllers/paintings_controller.rb:12:in `new'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1412:in `initialize'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1560:in `attributes='
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1560:in `each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1564:in `block in attributes='
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/orm/activerecord.rb:37:in `image='
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/mount.rb:173:in `image='
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/mount.rb:317:in `cache'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/cache.rb:107:in `cache!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `with_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `block in with_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/versions.rb:213:in `cache_versions!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/versions.rb:213:in `each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/versions.rb:215:in `block in cache_versions!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/cache.rb:107:in `cache!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `with_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/callbacks.rb:18:in `block in with_callbacks'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/processing.rb:81:in `process!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/processing.rb:81:in `each'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/uploader/processing.rb:83:in `block in process!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:132:in `resize_to_limit'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:248:in `manipulate!'
/Users/binyannie/.rvm/gems/ruby-1.9.2-p290/gems/carrierwave-0.5.7/lib/carrierwave/processing/rmagick.rb:248:in `read'

-- C level backtrace information -------------------------------------------

I really have no clue why it is so. Anyone can give me a hint? Thanks!


Source: (StackOverflow)

CarrierWave and resize to a specific width

Using CarrierWave in Rails 3.0 how would you go about making the code resize images that have a width larger than 500 pixels to be 500 pixels wide and adjust the height appropriately - keeping the same initial ratio of width to height.


Source: (StackOverflow)

How to assign a remote file to Carrierwave?

I have video model with the following definition:

class Video
  require 'carrierwave/orm/activerecord'
  mount_uploader :attachment, VideoUploader
  mount_uploader :attachment_thumbnail, VideoThumbnailUploader
  ...
end

When I upload a video file. It also sends the file to our encoding service Zencoder, which encodes the video file and creates a thumbnail for it.

Normally, I could do something like @video.attachment.url, which will return the path of the video file. I'd like to do the same thing with the thumbnail. i.e. @video.attachment_thumbnail.url

However, since the attachment is created by our encoding service, which also uploads it to a specified S3 bucket. How do I assign the attachment to the attachment_thumbnail column for the record?

Can I simply do something like:

@video.update_attributes(
  :attachment_thumbnail => 'https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png'
)

Is it possible to assign files like this to Carrierwave?


Source: (StackOverflow)

Reprocessing images of different versions in Carrierwave

Using Carrierwave, I created 3 versions of an avatar - an original, a small_thumb and a large_thumb using the following lines:

process :resize_to_limit => [400, 400]  

   version :big_thumb do
     process :resize_to_limit => [80, 80]
   end

   version :small_thumb do
     process :resize_to_limit => [50, 50]
   end

I added an additional method in my AvatarUploader class:

def reprocess(x,y,w,h)
        manipulate! do |img|
            img.crop(x.to_i, y.to_i, w.to_i, h.to_i, true) 

            end
resize_to_limit(180,180)  
end

which is called in my model after an update is performed:

attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
after_update :reprocess_image, :if => :cropping?

def cropping?
    !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end

private

def reprocess_image
image.reprocess(crop_x,crop_y,crop_w,crop_h)

end

I have managed to crop and resize the original version, but I can't seem to update the 2 thumbnails along with it. I tried a few different techniques to no avail.

Any suggestions?


Source: (StackOverflow)

CarrierWave: Create the same, unique filename for all versioned files

Before I go into detail I'll get right to the point: has anyone figured out a way to get Carrierwave to save files with their names as a timestamp or any arbitrary string that is unique to each file?

By default Carrierwave saves each file and its alternate versions in its own directory (named after the model ID number). I'm not a fan of this because instead of one directory with 1,000, for the sake of using a large round number, files (in my case pictures) in it we get one directory with 1,000 subdirectories each with one or two files. Yuck.

Now, when you override your Uploader's store_dir method to be something like the following:

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}"
end

you end up with the exact behavior that I want. All the files (pictures) go into one big happy folder. No more subfolders that stick around when the object gets deleted.

There's only one problem. File collisions. If you upload delicious_cake.jpg twice the second one will overwrite the first even if they are two different pictures of delicious cake! That's clearly why the store_dir method has the extra /#{model.id} tacked on the end of the value it returns.

So, what to do? After reading around a bit I discovered that in the generated uploader file there is an apparent solution commented out.

# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
#   "something.jpg" if original_filename
# end

After a little bit of searching I found someone who had done the following

def filename
  @name ||= "#{secure_token}.#{file.extension}" if original_filename
end

This got me thinking, why not just do this

def filename
  @name ||= "#{(Time.now.to_i.to_s + Time.now.usec.to_s).ljust(16, '0')}#{File.extname(original_filename)}"
end

That's when things got horribly broken. The problem with this is that filename apparently gets called for each version of the file so we end up with file names like 1312335603175322.jpg and thumb_1312335603195323.jpg. Notice the slight difference? Each file name is based on the time when filename was called for that particular version. That won't do at all.

I next tired using model.created_at for the basis of the timestamp. Only one problem, that returns nil for the first version since it hasn't been put in the database yet.

After some further thinking I decided to try the following in my pictures controller.

def create
  if params[:picture] and params[:picture][:image]
    params[:picture][:image].original_filename = "#{(Time.now.to_i.to_s + Time.now.usec.to_s).ljust(16, '0')}#{File.extname(params[:picture][:image].original_filename)}"
  end
  ...

This overrides the original_filename property before Carrierwave even gets to it making it be a timestamp. It does exactly what I want. The original version of the file ends up with a name like 1312332906940106.jpg and the thumbnail version (or any other version) ends up with a name like thumb_1312332906940106.jpg.

But, this seems like an awful hack. This should be part of the model, or better yet part of the uploader mounted onto the model.

So, my question is, is there a better way to achieve this? Did I miss something crucial with Carrierwave that makes this easy? Is there a not so obvious but cleaner way of going about this? Working code is good, but working code that doesn't smell bad is better.


Source: (StackOverflow)

Downloading and zipping files that were uploaded to S3 with CarrierWave

I have a small Rails 3.2.1 app that uses CarrierWave 0.5.8 for file uploads to S3 (using Fog)

I want users to be able to select some images that they'd like to download, then zip them up and send them a zip. Here is what I've come up with:

def generate_zip
  #A collection of Photo objects. The Photo object has a PhotoUploader mounted.
  photos = Photo.all

  tmp_filename = "#{Rails.root}/tmp/" << Time.now.strftime('%Y-%m-%d-%H%M%S-%N').to_s << ".zip"
  zip = Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE)
  zip.close

  photos.each do |photo|
    file_to_add = photo.photo.file
    zip = Zip::ZipFile.open(tmp_filename)
    zip.add("tmp/", file_to_add.path)
    zip.close
  end

  #do the rest.. like send zip or upload file and e-mail link

end

This doesn't work because photo.photo.file returns an instance of CarrierWave::Storage::Fog::File instead of a regular file.

EDIT: The error this leads to:

Errno::ENOENT: No such file or directory - uploads/photos/name.jpg

I also tried the following:

tmp_filename = "#{Rails.root}/tmp/" << Time.now.strftime('%Y-%m-%d-%H%M%S-%N').to_s << ".zip"
    zip = Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE)
    zip.close

    photos.each do |photo|
      processed_uri = URI.parse(URI.escape(URI.unescape(photo.photo.file.authenticated_url)).gsub("[", "%5B").gsub("]", "%5D"))
      file_to_add = CarrierWave::Uploader::Download::RemoteFile.new(processed_uri)
      zip = Zip::ZipFile.open(tmp_filename)
      zip.add("tmp/", file_to_add.path)
      zip.close
    end

But this gives me a 403. Some help would be greatly appreciated.. It probably is not that hard I'm just Doing it Wrong™


Source: (StackOverflow)