• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

频繁的“没有这样的文件或目录”,同时通过回形针保存文件

ruby-on-rails 来源:pcg79 3次浏览

我觉得这将在facepalm时刻结束,但我一直在我的头上打了太久。频繁的“没有这样的文件或目录”,同时通过回形针保存文件

我有一个Rails seed.rb文件从一个特定的目录中创建的每个文件的新对象,并通过节省回形针的文件获取的所有文件:

Dir["./**/*.jpg"].each do |f| 
    ... 
    p = Picture.new 
    File.open(f, 'r') { |photo_file| p.photo = photo_file } 
    p.save! 
    .... 
end 

其中photo是回形针分配属性(picture.rb):

has_attached_file :photo, 
        :styles => { :medium => "500x500>", :thumb => "100x100#" }, 
        :processors => [:rotator] 

我的问题是在一些数量的文件(有时50,有时2)脚本,出现以下错误退出:

No such file or directory - /var/folders/oD/oDq1WD11EEaXmfi8VfNvfE+++TM/-Tmp-/stream,22423,0,22423,0 
/Users/patgeorge/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/fileutils.rb:1407:in `stat' 
/Users/patgeorge/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/fileutils.rb:1407:in `block in fu_each_src_dest' 
/Users/patgeorge/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/fileutils.rb:1423:in `fu_each_src_dest0' 
/Users/patgeorge/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/fileutils.rb:1405:in `fu_each_src_dest' 
/Users/patgeorge/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/fileutils.rb:504:in `mv' 
/Users/patgeorge/.rvm/gems/[email protected]/bundler/gems/paperclip-61f74de14812cabc026967a2b2c3ca8cbd2eed69-master/lib/paperclip/storage.rb:42:in `block in flush_writes' 

我想也许我没有关闭文件,但根据Ruby IO docs使用open的块将会关闭文件。

显然我没有看到自己必须经常运行它,所以这不是一个大问题。这只是令人沮丧和困惑。

我正在运行Ruby 1.9.2 r28142,Rails 3.0.0.beta4和Paperclip 2.3.3。

附加:

试图温菲尔德的建议,我的代码块现在看起来是这样的:

Dir["./**/*.jpg"].each do |f| 
    ... 
    File.open(f, 'r') do |photo_file| 
    p = Picture.new 
    p.photo = photo_file 
    p.save! 
    end 
    ... 
end 

仍能定期收到错误,虽然。

还有更多信息

我注意到,当我第一次运行我的脚本它能够完成大量的文件(12左右)。当我继续运行它时,数字会减少到我一次只能做2次的地方。我不确定我在做什么来使其“重置”和处理更多。但我认为这是关键。


===========解决方案如下:

这只猴子补丁解决了这个问题:

http://github.com/thoughtbot/paperclip/issues/issue/262/


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)