以前一直都将Capistrano 的deploy.rb的文件放在SVN中,最近需要将代码共享给别人一同开发,这才发现了有一个问题,就是我的空间帐号与数据库的密码是不希望让人知道,毕竟知道的人越少越好嘛。
而且最近做了一件傻事,就是以前我都是将
ENV["GEM_HOME"]="/home/yourusername/.gems"
ENV["GEM_PATH"]="/home/yourusername/.gems:/usr/lib/ruby/gems/1.8"
这样的配置放在dispatch.fcgi中,现在因为使用了Phusion Passenger (mod_rails)之后,这一段的内容放在了config/enviroment.rb之中,所以在windows上运行rake test时,出现了找不到gems的错误,一时没有想到了这样的问题,还费了半天的功夫:(
于是鉴于这些问题,deploy.rb原则上不需要放在版本控制中的,而且database.yml与enviroment.rb也不需要放在版本控制之中,这些文件可以另外保存,与rails代码分开,放在另一个版本控制之中,并且放在share_dir中,在部署时拷贝到相应的目录之中。
想做到这样,只需要在deploy.rb中增加一个任务
before "deploy:restart", 'deploy:copy_config'
desc "Copy the configuration file "
task :copy_config, :roles => :app, :except => { :no_release => true } do
run "cp -f #{shared_dir}/environment.rb #{current_path}/config/environment.rb"
run "cp -f #{shared_dir}/database.yml #{current_path}/config/database.yml"
end
即可

![my Atom 1.0 feed [Valid Atom 1.0]](/images/valid-atom.png)

