Capistrano为每个部署创建新数据库

时间:2012-06-13 00:02:49

标签: ruby-on-rails sqlite capistrano

目前我将Capistrano部署到设置为开发环境的服务器上。

但是,每次运行cap deploy时,它都不会保留数据库,因此每次部署都会以新数据库结束,完全为空。我必须运行cap deploy:migrations来设置数据库,但问题是每个部署都有一个单独的数据库。

我想我可以更改database.yml为数据库使用../../db/development.sqlite3之类的路径,但这意味着我必须在本地复制该更改,并将我的数据库移出目录我在自己的笔记本电脑上的项目非常方便。

有没有办法告诉Capistrano为每个部署使用单个数据库位置,但仍然将我的数据库保存在本地的同一个位置?不幸的是,这个阶段不能将服务器设置为生产环境。像能够做的事情:

development: 
  adapter: sqlite3
  :on local
      database: db/development.sqlite3
  :on server
      database: /webapps/rails/shared/dev.sqlite3
  pool: 5
  timeout: 5000

(在这一点上,它可能也值得一提,我仍然在学习Rails的方式)。

非常感谢您的任何想法,谢谢。如果唯一的选择是将env设置为生产然后必须这样做,但如果有一种方法可以让我将服务器作为开发服务器,那就太棒了。

杰克。

2 个答案:

答案 0 :(得分:3)

在任何数据库内容之前运行的capistrano中添加一个步骤,以创建指向共享目录的任何数据库文件的符号链接。这就是logs为您设置的方式。有点像这样:

namespace :custom do
  task :symlink, :roles => :app do
    run "ln -nfs #{shared_path}/development.sqlite3 #{release_path}/db/development.sqlite3"
  end
end

after "deploy:create_symlink", "customs:symlink"

答案 1 :(得分:0)

我认为您正在经历多个应用程序环境:一个用于在服务器上进行暂存,一个用于本地开发,最后一个用于生产。为了顺利完成,try here