0

目前,我将 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)。

您的任何想法将不胜感激,谢谢。如果唯一的选择是将环境设置为生产环境,那将不得不这样做,但如果有办法让我将服务器保留为开发服务器,那就太好了。

杰克。

4

2 回答 2

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"
于 2012-06-13T01:22:49.880 回答
0

我认为您在使用多种应用程序环境:一种用于在服务器上登台,一种用于本地开发,最后一种用于生产。为了顺利通过,试试这里

于 2012-06-13T00:15:14.827 回答