【发布时间】:2013-12-16 09:12:56
【问题描述】:
我正在尝试将Fog /Carrierwave/ 与 Rackspace Cloud Files 一起使用。我的生产服务器中有一堆上传的图像。我正在尝试使用以下 rake 任务将这些图像上传到 Rackspace Cloud Files。
desc 'Transfer photos to rackspace'
task :photos => :environment do
photos = Photo.order(created_at: :desc).limit(10)
photos.each do |photo|
if photo.attachment?
photo.attachment.recreate_versions!
photo.save!
else
puts "================================= ATTACHMENT NOT FOUND: ID: #{photo.id}"
end
end
end
但我收到以下错误:
rake aborted!
undefined method `body' for nil:NilClass
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/carrierwave-0.9.0/lib/carrierwave/storage/fog.rb:227:in `read'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:77:in `sanitized_file'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:116:in `cache!'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/versions.rb:225:in `recreate_versions!'
/home/zeck/code/bee/lib/tasks/bee.rake:9:in `block (4 levels) in <top (required)>'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/activerecord-4.0.1/lib/active_record/relation/delegation.rb:13:in `each'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/gems/activerecord-4.0.1/lib/active_record/relation/delegation.rb:13:in `each'
/home/zeck/code/bee/lib/tasks/bee.rake:7:in `block (3 levels) in <top (required)>'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/bin/ruby_noexec_wrapper:14:in `eval'
/home/zeck/.rvm/gems/ruby-2.0.0-p247@rails-4-1/bin/ruby_noexec_wrapper:14:in `<main>'
这意味着图像未存储在 Rackspace 云文件中。你们有类似的rake任务吗?请分享给我。或者指导我。
谢谢你的建议:D
【问题讨论】:
-
我完全没有使用 RackSpace 的经验,但我想问的一个问题是,你知道你的任务为什么要尝试运行
body方法吗? -
感谢您的回复。因为它是从 RackSpace 调用文件。该文件在 RackSpace 中不存在。我还没有将该文件上传到 RackSpace。此任务应将该文件上传到 RackSpace。
-
好的,你应该在文件对象上有
body方法? -
为什么?是否忽略此错误?
-
:) 感谢您的回复!如前所述,对这个特定问题没有经验,因此将查看您推荐的博客文章!非常感谢!
标签: ruby-on-rails rake carrierwave rackspace-cloud fog