gpt4 book ai didi

ruby - 设置 :linked_files and set :linked_files for uploads in capistrano3

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:18 25 4
gpt4 key购买 nike

我正在尝试使用 capistrano3 将我的文件和文件夹上传到我的服务器。我希望该文件夹在所有版本之间共享。例如,我有一个名为 media 的文件夹,它包含子目录和文件。我希望将其放置在 Capistrano 3 创建的共享目录下。这个我见过

set :linked_files, %w{config/database.yml}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

有什么方法可以将媒体的所有文件和子目录上传到共享目录。

注意:基本上我希望我的上传不受 capistrano3 的影响。有什么方法可以让我只创建上传文件夹的结构,并且它在我的 capistrano 部署中保持不变。提前致谢。

最佳答案

media 目录添加到 linked_dirs 中,如果您希望该文件夹在所有版本之间共享。

设置:linked_dirs,%w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system media}

然后像这样写一个任务:

namespace :deploy do
desc 'upload media files'
task :upload_media_files do
remote_path, local_path = "#{fetch(:deploy_to)}/shared/media", '/your/local/media/path'
on release_roles :app do
upload!(local_path, remote_path, recursive: true)
end
end
end

after 'deploy:check', 'deploy:upload_media_files'

这是一个scp 命令。根据source code ,命令将是:scp -t -r/remote/shared/media

如果你不想覆盖现有的文件,你应该使用rsync

namespace :deploy do
desc 'upload media files'
task :upload_media_files do
remote_path, local_path = "#{fetch(:deploy_to)}/shared", '/your/local/media/path'
on release_roles :app do |server|
system("rsync -avzr #{local_path} #{fetch(:deployer)}@#{server.hostname}:#{remote_path}")
end
end
end

after 'deploy:check', 'deploy:upload_media_files'

关于ruby - 设置 :linked_files and set :linked_files for uploads in capistrano3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28296492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com