目前我将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设置为生产然后必须这样做,但如果有一种方法可以让我将服务器作为开发服务器,那就太棒了。
杰克。
答案 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。