我有一个CarrierWave上传,我需要禁用缓存文件保存到存储后删除.然后对该缓存文件执行某种操作并手动删除它。我的上传者:
class FileUploader < CarrierWave::Uploader::Base def store_dir "store" end def cache_dir 'tmp' end def size_range 0..100.megabytes end end
bpzcxfmw1#
您可以使用回调,在存储之前/之后。在这里分享一个片段沿着一个链接-
after :store, :do_something_and_delete_manually
文件上传后触发回调。确保在使用回调函数后手动删除了该高速缓存。查看此Carrierwave WIKI page以了解更多详细信息。
b91juud32#
您可以覆盖remove_cached_versions!方法下面的代码将禁止删除上传文件的所有缓存版本
class FileUploader < CarrierWave::Uploader::Base def remove_cached_versions! # perform the intended operation here end end
您可以在将缓存文件保存到存储区后禁用删除缓存文件。通过在上传器配置中设置keep_cached_files选项
# config/initializers/carrierwave.rb CarrierWave.configure do |config| config.keep_cached_files = true end
gcxthw6b3#
我找到了我认为最适合我的选择我深入研究了gem的内部,注意到如果方法delete_tmp_file_after_storage返回true,则会删除该高速缓存。所以我只是重写了这个方法,仅此而已。
delete_tmp_file_after_storage
true
def delete_tmp_file_after_storage(config = nil) @delete_tmp_file_after_storage ||= config.present? end
默认情况下,我禁用了缓存删除,但如果需要,可以启用它。
q0qdq0h24#
正如@leonchik12所指出的,这种行为是由@delete_tmp_file_after_storage示例变量控制的(代码似乎在这里)。虽然their answer可以工作,但覆盖此配置的更好方法是通过项目中应该有的标准配置块。阅读gem的README,您可以看到这里有一个配置部分。不幸的是,文档并不清楚有哪些配置选项,但是查看代码,您可以看到所有可能的可配置选项in configuration.rb查看选项,您会注意到在第22行上有一个delete_tmp_file_after_storage的配置。所以把所有这些信息放在一起,你可以简单地做如下事情:
@delete_tmp_file_after_storage
CarrierWave.configure do |config| config.delete_tmp_file_after_storage = false # you can add more configs below end
您可以参考this文章的示例,其中使用了.configure。更多示例可通过gem's wiki找到
.configure
4条答案
按热度按时间bpzcxfmw1#
您可以使用回调,在存储之前/之后。
在这里分享一个片段沿着一个链接-
文件上传后触发回调。确保在使用回调函数后手动删除了该高速缓存。
查看此Carrierwave WIKI page以了解更多详细信息。
b91juud32#
您可以覆盖remove_cached_versions!方法
下面的代码将禁止删除上传文件的所有缓存版本
您可以在将缓存文件保存到存储区后禁用删除缓存文件。通过在上传器配置中设置keep_cached_files选项
gcxthw6b3#
我找到了我认为最适合我的选择我深入研究了gem的内部,注意到如果方法
delete_tmp_file_after_storage
返回true
,则会删除该高速缓存。所以我只是重写了这个方法,仅此而已。默认情况下,我禁用了缓存删除,但如果需要,可以启用它。
q0qdq0h24#
正如@leonchik12所指出的,这种行为是由
@delete_tmp_file_after_storage
示例变量控制的(代码似乎在这里)。虽然their answer可以工作,但覆盖此配置的更好方法是通过项目中应该有的标准配置块。阅读gem的README,您可以看到这里有一个配置部分。不幸的是,文档并不清楚有哪些配置选项,但是查看代码,您可以看到所有可能的可配置选项in configuration.rb
查看选项,您会注意到在第22行上有一个
delete_tmp_file_after_storage
的配置。所以把所有这些信息放在一起,你可以简单地做如下事情:
您可以参考this文章的示例,其中使用了
.configure
。更多示例可通过gem's wiki找到