公用文件夹大小很大 - 消化的资产 - Ruby on Rails

时间:2016-03-17 17:48:31

标签: ruby-on-rails ruby caching server asset-pipeline

在我的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等。 那么,有没有办法自动删除/过期这些资产?

1 个答案:

答案 0 :(得分:0)

虽然非常不标准,但我不得不说,我有点像这种方法,对我来说似乎比Rails现在使用的一个巨大的资产目录更清晰。

无论如何,如果你想保留10个最新的资产目录并删除其他所有内容,你可以简单地创建一个capistrano任务(如果你正在使用capistrano)并为dirs expiration调用 shell命令< / strong>来自它,比如这个:

-i

使用-f选项,删除将是交互式的,即系统会要求您确认要删除的每个文件。如果您确定已准备好脚本生成并且将以静默方式删除dirs,请将此更改为lsSO 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任务。