2016-02-04 41 views
0

我試圖按照https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog說明,但我得到的錯誤。我的文件,我使用carrierwave_backgrounder所以我需要這些指令立即處理稱爲hat.jpgcarrierwave新聞背景S3 recreate_versions

with_avatar.each do |instance| 
    begin 
     instance.process_avatar_upload = true 
     instance.avatar.cache_stored_file! 
     instance.avatar.retrieve_from_cache!(instance.avatar.cache_name) 
     instance.avatar.recreate_versions! 
     instance.save! 
    rescue => e 
     Rails.logger.info("ERROR: UserAvatar: #{instance.id} -> #{e}") 
    end 
    end 

所以,我一次試着在我的控制檯一行。如果我設置process_avatar_upload = true,則下一行失敗

undefined method `cached?' for nil:NilClass 

如果我運行相同的命令,我再次得到

undefined method `content_length' for nil:NilClass 

最後,如果我跑第三次,它似乎工作。但是,當我到達recreate_versions!我得到這個:

No such file or directory [my file path]/uploads/tmp/1454615129-9112-7053/square_hat.jpg 

它是正確的,沒有廣場,因爲這就是我想要創建。

我怎樣才能重新我的S3版本?我有很多人要做。謝謝。

回答

1

這「應該」是不夠的:

instance.process_avatar_upload = true 
instance.avatar.recreate_versions! 

參考: https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/uploader/versions.rb#L216

如果您使用的是官方的寶石,這是很老(0.10.0)你應該給主人一個機會。如果你沒有特殊版本的設置像:from_version => :foo或嵌套的版本一樣

version :foo do 
    version :foobar do 
    [...] 
    end 
end 

它應該像以前一樣工作。 (但嘗試在非生產(!))

+0

好吧,所以我改變了只使用上述兩行。我現在也在使用主人。我刪除了我使用的from_versions。所有這些都允許我重新創建_version。謝謝! – alassiter