Paperclip gives permission to opt out with samba mount
In my development environment, the codebase is mounted on a ubuntu VM server using samba mount, it is mounted as root and I run mongrel as root.
When I try to upload a file using Paperclip, the file keeps fine, but then it has problems generating different styles.
I am getting the following error:
Errno::EACCES (Permission denied - /foo/some/file/path/file-name-style.jpg):
/usr/lib/ruby/1.8/fileutils.rb:1272:in `chown'
/usr/lib/ruby/1.8/fileutils.rb:1272:in `copy_metadata'
/usr/lib/ruby/1.8/fileutils.rb:452:in `copy_entry'
/usr/lib/ruby/1.8/fileutils.rb:1324:in `traverse'
/usr/lib/ruby/1.8/fileutils.rb:448:in `copy_entry'
/usr/lib/ruby/1.8/fileutils.rb:507:in `mv'
/usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
/usr/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
/usr/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
/usr/lib/ruby/1.8/fileutils.rb:494:in `mv'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:43:in `flush_writes'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:39:in `each'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:39:in `flush_writes'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/attachment.rb:142:in `save'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:331:in `send'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:331:in `save_attached_files'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:324:in `each_attachment'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:323:in `each'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:323:in `each_attachment'
vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:330:in `save_attached_files'
It works great if I remove / foo / from the mounted code folder structure and instead make it a symbolic link somewhere directly inside the Ubuntu VM.
source to share
Since the error appears to occur when calling chown, I am assuming that the user who has the file chown'd to / from does not have write permissions on mount. It is possible that the user in the virtual machine is unknown on the other system, so when the chown occurs, it is released.
Check that the file is written as (chown'd to) when removing / foo / from the path, then see if you can write the file to the / foo / some / file / path / user directory.
source to share