每次运行在远程服务器上部署我丢失了一些未受版本控制的文件,因为capistrano会创建一个新目录并检出其中的最新版本。但是有些文件没有像用户头像(回形针)和上传的图像那样版本化,并且没有被复制到新的当前版本。使用Capistrano部署时保留未版本控制的文件
我该如何解决这个问题?
谢谢!
每次运行在远程服务器上部署我丢失了一些未受版本控制的文件,因为capistrano会创建一个新目录并检出其中的最新版本。但是有些文件没有像用户头像(回形针)和上传的图像那样版本化,并且没有被复制到新的当前版本。使用Capistrano部署时保留未版本控制的文件
我该如何解决这个问题?
谢谢!
就我个人而言,我认为处理这些事情的最佳方式是将它们存储在共享文件夹中,并在capistrano中创建任务以创建符合链接的共享资源。
下面是我的一个项目为例:
set :shared_assets, %w{public/images/products public/images/barcodes}
namespace :assets do
namespace :symlinks do
desc "Setup application symlinks for shared assets"
task :setup, :roles => [:app, :web] do
shared_assets.each { |link| run "mkdir -p #{shared_path}/#{link}" }
end
desc "Link assets for current deploy to the shared location"
task :update, :roles => [:app, :web] do
shared_assets.each { |link| run "ln -nfs #{shared_path}/#{link} #{release_path}/#{link}" }
end
end
end
before "deploy:setup" do
assets.symlinks.setup
end
before "deploy:symlink" do
assets.symlinks.update
end
将您的路径shared_children也适用,它实际上只是一个班轮在你的deploy.rb:
set :shared_children, shared_children + %w{public/uploads}
发现这里:astonj
这里是非常微小和有用的宝石:https://github.com/teohm/capistrano-shared_file。检查宝石的文档 - 一切都很简单。
安装宝石,在deploy.rb
需要它,只是提供你希望在shared_files
选项版本之间共享文件的数组:
set :shared_files, %w(config/database.yml)
存储文件的<project_dir>/shared/files/YOUR_FILE_GOES_HERE
。在每次部署时,它们都将与您的应用程序的根目录相符。就这样。
我明白,但......“共享”目录是一个capistrano的事情,据我所知,Rails并不知道。那么,我该如何告诉rails将文件保存在应用程序之外的目录中,并且它不存在于我的本地副本中? – emzero 2011-01-10 18:38:20