【发布时间】:2013-01-04 18:07:12
【问题描述】:
我的资产在/home/name/apps/myapp/shared/assets"的生产服务器上
我看到这个目录正在快速增长。现在权重文件夹是 40 Mb,但我当前资产的权重是 3.2 mb
我的问题是如何使用 capistrano 自定义任务清理这个旧资产文件夹。当我做最后一个时,我只需要最后一个资产cap deploy
已编辑:
用于预编译的 Capistrano 任务:
namespace :assets do
task :precompile, :roles => :web, :except => { :no_release => true } do
from = source.next_revision(current_revision)
if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
run_locally("rm -rf public/assets/*")
run_locally "bundle exec rake assets:precompile"
find_servers_for_task(current_task).each do |server|
run_locally "rsync -vr --exclude='.DS_Store' --recursive --times --rsh=ssh --compress --human-readable --progress public/assets #{user}@#{server.host}:#{shared_path}/"
end
else
puts.info "Skipping asset pre-compilation because there were no asset changes"
end
end
end
我在生产服务器上预编译了资产,但我已更改为使用 rsync 将资产预编译到本地机器。
【问题讨论】:
-
您目前如何部署这些资产?您是否预编译它们并将它们添加到存储库中?你预编译它们并rsync它们吗?当您说您的“当前资产”仅重 3.2 MB 时,您指的是您的开发
public/assets文件夹还是您的app/assets文件夹? -
是的。我已经更新了我的问题。我是现场服务器生产的预编译资产,但现在我已更改为在本地计算机上预编译并在使用 rsync 上传后。我指的是我的公共/资产,重量为 3.2 mb。非常感谢!
-
您是否尝试将
--delete添加到您的rsync 任务中?从 rsync 手册页:--delete delete extraneous files from dest dirs. -
谢谢,您能在一个回复中将您的代码添加到上述示例中吗?
-
完成了。很高兴你成功了。
标签: ruby-on-rails ruby ruby-on-rails-3 deployment capistrano