在我的RoR应用中,production.rb已
MyApp::Application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_dispatch.show_detailed_exceptions = false
# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = true
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# Callback to assets pipeline if a precompiled asset is missed.
config.assets.compile = true
# Generate digests for assets URLs.
config.assets.digest = true
# Version of your assets, change this if you want to expire all your assets.
config.assets.version = '1.3'
config.assets.prefix = "/assets-#{`git rev-parse HEAD`[0..8]}"
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.action_controller.perform_caching = true
end
问题出在服务器上,公用文件夹大小 15GB 。它包含许多名称如下的文件夹:
assets-2d947fb8a
assets-64bb1c0ee
assets-6b4777157
assets-33d9c439d
assets-e6f2c6c37
assets-cb3a9bc23
assets-f1e77e02d
每个文件夹都包含已消化的图像,js,css等。 那么,有没有办法自动删除/过期这些资产?
答案 0 :(得分:0)
虽然非常不标准,但我不得不说,我有点像这种方法,对我来说似乎比Rails现在使用的一个巨大的资产目录更清晰。
无论如何,如果你想保留10个最新的资产目录并删除其他所有内容,你可以简单地创建一个capistrano任务(如果你正在使用capistrano)并为dirs expiration调用 shell命令< / strong>来自它,比如这个:
-i
使用-f
选项,删除将是交互式的,即系统会要求您确认要删除的每个文件。如果您确定已准备好脚本生成并且将以静默方式删除dirs,请将此更改为ls
。 SO answers here帮助我构建了from gcloud import storage
gcs_client = storage.Client()
gcs_bucket = gcs_client.get_bucket('mybucketname')
gcs_blob = gcs_bucket.blob(path)
gcs_blob.download_to_file(somefileobject)
部分。
你可以把这个小&#34;脚本&#34;到部署期间资产预编译后调用的capistrano任务。