我有一个已经部署的画廊风格的应用程序。我的本地版本有很多照片,我只用于本地测试,我绝对不希望它们覆盖我在线的真实照片。
我还有一个 git 存储库,它只跟踪我的代码并忽略照片。
当我输入 cap deploy:migrations 时,它是否使用我的 git 存储库?即 Capistrano 会用本地照片覆盖我的在线照片,还是会因为 git 忽略它们而忽略它们?
我有一个已经部署的画廊风格的应用程序。我的本地版本有很多照片,我只用于本地测试,我绝对不希望它们覆盖我在线的真实照片。
我还有一个 git 存储库,它只跟踪我的代码并忽略照片。
当我输入 cap deploy:migrations 时,它是否使用我的 git 存储库?即 Capistrano 会用本地照片覆盖我的在线照片,还是会因为 git 忽略它们而忽略它们?
只需将您的照片放入 capistrano 的共享文件夹并进行符号链接即可。要使其自动化,请编写一个 capistrano 配方,例如:
namespace :deploy do
after "deploy:setup", "deploy:pictures:setup"
after "deploy:symlink", "deploy:pictures:symlink"
namespace :pictures do
desc "Create the pictures dir in shared path."
task :setup do
run "cd #{shared_path}; mkdir pictures"
end
desc "Link pictures from shared to common."
task :symlink do
run "cd #{current_path}/public; rm -rf pictures; ln -s #{shared_path}/pictures ."
end
end
end
这个配方将在“cap deploy:setup”上的 capistranos 共享文件夹中创建一个图片文件夹,并在每个“cap deploy”上对其进行符号链接。
因此,如果您已经在服务器上创建了图片文件夹并添加了一些图片,您可以在运行命令之前将其迁移:
cd yourapp
mv current/public/pictures shared
ln -s shared/pictures current/public/pictures
我使用另一个方法在多台机器上同步共享文件夹的内容,你可以从GitHub获取
部署时,capistrano 将从您选择的版本控制系统中签出一个新副本。它不关心您的本地文件。