Uploading error with attachment_fu and rmagick

I wrote a small app, rails 2.0.2 using attachment_fu and rmagick to
upload files. Everthing works fine in my dev machine ( windows XP ). I
can upload with no problem.

I am using deprec/capistrano to deploy to my slicehost account.
Everthing works fine, but when I try to upload a file, I was getting the
“We’re sorry, but something went wrong.”, so I delete the 500.html error
file from the public folder. I wana see the error, but now, I got a
blank page.

I got this blank page with PNG and JPG, but uploading BMP´s file I got
the error message:

"1 error prohibited this image from being saved
There were problems with the following fields:
* Content type is not included in the list "

I am using mongrel/nginx.

How can I see the error message ?

This is my new.html.erb

Upload New Photo:
<%= error_messages_for :image %>
<% form_for(:image, :url => product_images_path, :html => { :multipart
=> true }) do |f| %>
Select File: <%= f.file_field :uploaded_data %>
Description: <%= f.text_area :description %>
<%= submit_tag ‘Upload image’ %>
<% end %>

I ran this convert -version, to check my imagemagick version:

Version: ImageMagick 6.2.4 10/02/07 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2005 ImageMagick Studio LLC

I have rmagick 1.15.12 installed.

I think this issue, is due something wrong at my slicehost installation.

Thanks in advance.

I a newbie at rails and linux, maybe I have an issue with nginx or some
rights have to be granted to create images and folder, as u can see,
attachment_fu will try to save them at public/uploads folder, here is my
images model.

class Image < ActiveRecord::Base

has_attachment :content_type => :image,
:path_prefix => ‘public/uploads’,
:storage => :file_system,
:size => 0.megabyte…2.megabytes,
:resize_to => ‘450x450>’,
:thumbnails => { :thumb => ‘150x150>’ },
:processor => ‘Rmagick’

validates_as_attachment
belongs_to :product

end

hi Jose,

give a peek at the log file, perhaps it can help you.

check RAILS_ROOT/log/

felipe mesquita
http://felipemesquita.com

On Wed, Apr 16, 2008 at 3:37 PM, Jose carlos Da cunha jr <

could try running it in dev mode temporarily
Jose carlos Da cunha jr wrote:

I a newbie at rails and linux, maybe I have an issue with nginx or some
rights have to be granted to create images and folder, as u can see,
attachment_fu will try to save them at public/uploads folder, here is my
images mode

Felipe Mesquita wrote:

hi Jose,

give a peek at the log file, perhaps it can help you.

check RAILS_ROOT/log/

felipe mesquita
http://felipemesquita.com

On Wed, Apr 16, 2008 at 3:37 PM, Jose carlos Da cunha jr <

I was just looking for the log and found this: It seems to be a
permission issue… but there is another thing that I doesn’t
understand… my application is running at releases/20080416173337/
folder? it shouldn´t be at the myapp/current ?

Processing ImagesController#create (for 189.27.163.107 at 2008-04-16
19:21:30) [POST]
Session ID:
BAh7CToMdXNlcl9pZGkGOgxjc3JmX2lkIiU5YjQzMDIzOGQzNjc5NDA5NjFj%0AMTVjNDZkYTBlZTg2OSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxh%0Ac2g6OkZsYXNoSGFz$
Parameters: {“commit”=>“Envia imagem”,
“authenticity_token”=>“804ab9630d161a1f68c8ef9ac743c62fe198ec41”,
“product_id”=>“natasha-moore”, “action”=>“create”$

Errno::EACCES (Permission denied -
/var/www/apps/nanistore/releases/20080416173337/public/uploads/0000):
/usr/local/lib/ruby/1.8/fileutils.rb:243:in mkdir' /usr/local/lib/ruby/1.8/fileutils.rb:243:in fu_mkdir’
/usr/local/lib/ruby/1.8/fileutils.rb:217:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:215:in reverse_each’
/usr/local/lib/ruby/1.8/fileutils.rb:215:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:201:in each’
/usr/local/lib/ruby/1.8/fileutils.rb:201:in mkdir_p' /vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb:83:in save_to_storage’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:425:in
after_process_attachment' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:307:in send’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:307:in
callback' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:304:in each’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:304:in
callback' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:214:in create_or_update’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1978:in
save_without_validation!' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/validations.rb:944:in save_without_transactions!’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:112:in
save!' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:66:in transaction’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:80:in
transaction' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:100:in transaction’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:112:in
save!' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:120:in rollback_active_record_state!’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:112:in
save!' /vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:253:in create_or_update_thumbnail’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/core_ext/object/misc.rb:28:in
returning' /vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:245:in create_or_update_thumbnail’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:423:in
after_process_attachment' /vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:423:in each’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:423:in
after_process_attachment' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:307:in send’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:307:in
callback' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:304:in each’
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:304:in
`callback’

Errno::EACCES (Permission denied -
/var/www/apps/nanistore/releases/20080416173337/public/uploads/0000):
/usr/local/lib/ruby/1.8/fileutils.rb:243:in mkdir' /usr/local/lib/ruby/1.8/fileutils.rb:243:infu_mkdir’
/usr/local/lib/ruby/1.8/fileutils.rb:217:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:215:inreverse_each’
/usr/local/lib/ruby/1.8/fileutils.rb:215:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:201:ineach’
/usr/local/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends

typically need to run it as sudo to avoid those

symbolic link? :wink:

felipe mesquita
http://felipemesquita.com

On Wed, Apr 16, 2008 at 4:27 PM, Jose carlos Da cunha jr <

/var/www/apps/nanistore/releases/20080416173337/public/uploads/0000):
My guess is that capistrano is using a timestamp to have different
copies of your app in your server.
Looks to me like you need to make sure that the permissions on
public/uploads/0000 allow for the apache user [or whomever] to write to
it. Possibly they got created by the capistrano user and apache user
doesn’t have write access or what not

Roger P. wrote:

Errno::EACCES (Permission denied -
/var/www/apps/nanistore/releases/20080416173337/public/uploads/0000):
/usr/local/lib/ruby/1.8/fileutils.rb:243:in mkdir' /usr/local/lib/ruby/1.8/fileutils.rb:243:infu_mkdir’
/usr/local/lib/ruby/1.8/fileutils.rb:217:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:215:inreverse_each’
/usr/local/lib/ruby/1.8/fileutils.rb:215:in mkdir_p' /usr/local/lib/ruby/1.8/fileutils.rb:201:ineach’
/usr/local/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends

typically need to run it as sudo to avoid those

I don’t know how to run it as sudo, inside my rails app.

What I did and it worked was run “chmod 777 uploads” command, so I
gave full access to the directory.

I am not sure this is the best way, but it works, while a look for way
to fix it.

There is something odd here, where should my app run? I have a current
folder and several releases folder. Why my app is pointing to a specific
release 20080416173337 folder?

I am using capistrano/deprec, they are awesome. But I must understand
a little bit more about them. :wink:

Anyway, I google lots of attachment_fu tutorial, didn´t see nobody
complaing about this permission denied.

Thanks for your help.

You should not put the uploads into your relase, but rather into a
subdirectory of the /shared directory that cap setup creates for
you. This folder you then symlink to RAILS_ROOT/public/uploads in your
capistrano recipe. Otherwise you’ll lose all your old uploads with the
next deploy. See this railscast

for details. Then make sure your deploy user is the owner of your
uploads folder, for example:
sudo chown deploy /shared/uploads

On Apr 17 2008, 6:52 am, Roger P. [email protected]