Ruby Forum Ruby on Rails > file_column: No such file or directory

Posted by Steven Line (sline)
on 03.05.2008 08:06
Hi All -

I just installed file_column and am trying to make the simplest example
work.  I have one file upload control and I'm getting the following
puzzling error.

It's complaining about a missing file or directory, but the first
directory in the error exists.  The second one doesn't because it's not
supposed to, I'm renaming the first directory to the second one.  The
model containing the image column is property, and the column is called
image. Has anybody seen this?  Thanks for any help!

I'm running ruby 1.8.6 and rails 2.0.2.

Errno::ENOENT (No such file or directory -
/home/sline/deployed/happycanyon/releases/20080503044201/public/property/image/tmp/1209794023.471088.30819
or
/home/sline/deployed/happycanyon/releases/20080503044201/public/property/image/production/1):
    /usr/local/lib/ruby/1.8/fileutils.rb:505:in `rename'
    /usr/local/lib/ruby/1.8/fileutils.rb:505:in `mv'
    /usr/local/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
    /usr/local/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
    /usr/local/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
    /usr/local/lib/ruby/1.8/fileutils.rb:494:in `mv'
    /vendor/plugins/rails_file_column/plugins/file_column/trunk/lib/file_column.rb:364:in
`move_from'
    /vendor/plugins/rails_file_column/plugins/file_column/trunk/lib/file_column.rb:310:in
`after_save'
    /vendor/plugins/rails_file_column/plugins/file_column/trunk/lib/file_column.rb:676:in
`image_after_save'
    /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:1972:in
`save_without_validation'
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/validations.rb:934:in
`save_without_transactions'
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:108: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:108: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:108:in
`save'
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:2034:in
`update_attributes'
    /app/controllers/property_controller.rb:41:in `update'
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:1158:in
`send'
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:1158:in
`perform_action_without_filters'
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/filters.rb:697:in
`call_filters'
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/filters.rb:689:in
`perform_action_without_benchmark'
Posted by Rails Terrorist (malioboro)
on 03.05.2008 15:10
> Errno::ENOENT (No such file or directory -
> /home/sline/deployed/happycanyon/releases/20080503044201/public/property/image/tmp/1209794023.471088.30819
> or
> >/home/sline/deployed/happycanyon/releases/20080503044201/public/property/image/production/1):


Check permission folder to those addresses, ensure that they are 755


Reinhart
http://teapoci.blogspot.com
Posted by Steven Line (sline)
on 03.05.2008 15:13
Oh boy, it's amazing what a half a night of sleep can do for solving 
software problems.  Wonder what a full night of sleep would do?

The error was because one of the intermediate directories in the 
destination directory name wasn't present.  I may hack my copy of 
file_column to create the destination directory with all intermediate 
components before the move.

Steve
Posted by Steven Line (sline)
on 03.05.2008 15:39
Here's the change I made in file_column.rb:

    def move_from(local_dir, just_uploaded)

#start new code
      dirname = File.dirname(@dir) # dirname of parent dir
      if not File.directory?(dirname)
        FileUtils.mkdir_p dirname # if intermediate dirs are missing, 
create them
      end
#end new code

      # remove old permament dir first
      # this creates a short moment, where neither the old nor
      # the new files exist but we can't do much about this as
      # filesystems aren't transactional.
      FileUtils.rm_rf @dir # remove last component of path

      FileUtils.move local_dir, @dir

      @just_uploaded = just_uploaded
    end
Posted by Roger Pack (rogerdpack)
on 05.05.2008 06:36
(Received via mailing list)
submit a patch, I guess :)
-R

On Sat, May 3, 2008 at 7:39 AM, Steven Line
Posted by Pau Ramon (masylum)
on 09.05.2008 08:40
(Received via mailing list)
I had the same problem man!

Thank's for solving it! it was impossible for me.