gpt4 book ai didi

ruby-on-rails - 通过 Paperclip 保存文件时频繁出现 "No such file or directory"

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:22 25 4
gpt4 key购买 nike

我觉得这会以一个捂脸的时刻结束,但我的头已经敲了太久了。

我有一个 Rails seed.rb 文件,它从特定目录获取所有文件,为每个文件创建一个新对象并通过 Paperclip 保存文件:

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

其中 photo 是 Paperclip 指定的属性 (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/ruby-1.9.2-head@rails3/bundler/gems/paperclip-61f74de14812cabc026967a2b2c3ca8cbd2eed69-master/lib/paperclip/storage.rb:42:in `block in flush_writes'

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

显然,我认为自己不必经常运行此程序,因此这不是一个大问题。这只是令人沮丧和困惑。

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

附加:

尝试 Winfield 的建议,我的代码块现在看起来像这样:

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/

关于ruby-on-rails - 通过 Paperclip 保存文件时频繁出现 "No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com