views:

435

answers:

1

In my development environment the codebase is mounted on a ubuntu-server VM using a samba mount, it is mounted as root and I run mongrel as root.

When I try and upload a file with Paperclip the file saves fine but then it seems to have problems creating the different styles.

I get 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 fine however if I remove /foo/ from the folder structure of the mounted code and instead make it a symbolic link to somewhere directly within the Ubuntu VM.

A: 

Because the error seems to be happening at the chown call, I'm guessing that the user that the file is being chown'd to/from doesn't have write permissions on the mount. It could be that the user on the VM isn't known on the other system, so when the chown happens it bails.

Check the user that the file is written as (chown'd to) when you remove /foo/ from the path, then see if you can write a file to the /foo/some/file/path/ directory as that user.