为什么选择在数据库主机上同步ruby-on-rails应用程序副本?

更新于
2026-10-10 00:15:16
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计418个文字,预计阅读时间需要2分钟。

为什么选择在数据库主机上同步ruby-on-rails应用程序副本?

允许使用Capistrano示例配置包,包括:

db角色. 默认情况下,部署任务将应用软件代码导出到所有角色的所有主机。因此,人们通常会保留数据库主机的应用软件副本。此外,在Capistrano的分离阶段,人们通常会在数据库主机上保留应用软件的副本。

许多Capistrano示例配方包括:db角色.默认情况下,部署任务将应用程序代码导出到所有角色中的所有主机.因此,这表明人们通常会在数据库主机上保留其应用程序的副本.此外,在Capistrano的分布式deploy.rb配方中,:deploy:migrate如下所示:

task :migrate, :roles => :db, :only => { :primary => true } do # ... end

我的问题是,为什么这样做呢?将应用程序代码保留在数据库主机(可能甚至没有安装Ruby)并从生产框运行迁移不是更清晰吗?

数据库服务器运行迁移,因为它是数据库的“负责人”.

人们还可以想象安全策略只允许从数据库服务器本身创建/删除/更改表.

如果在迁移期间加载了数据,甚至可能会有轻微的性能提升,尽管这是一个糟糕的想法.

如果您需要引用数据库主机并且不需要代码的副本,则可以使用以下内容:

为什么选择在数据库主机上同步ruby-on-rails应用程序副本?

role :db, 'dbhost', :no_release => true

在应用程序服务器上运行迁移的示例代码:

role :app, 'apphost', :runs_migrations => true task :migrate, :roles = :app, :only => {:runs_migrations => true } do #... end

本文共计418个文字,预计阅读时间需要2分钟。

为什么选择在数据库主机上同步ruby-on-rails应用程序副本?

允许使用Capistrano示例配置包,包括:

db角色. 默认情况下,部署任务将应用软件代码导出到所有角色的所有主机。因此,人们通常会保留数据库主机的应用软件副本。此外,在Capistrano的分离阶段,人们通常会在数据库主机上保留应用软件的副本。

许多Capistrano示例配方包括:db角色.默认情况下,部署任务将应用程序代码导出到所有角色中的所有主机.因此,这表明人们通常会在数据库主机上保留其应用程序的副本.此外,在Capistrano的分布式deploy.rb配方中,:deploy:migrate如下所示:

task :migrate, :roles => :db, :only => { :primary => true } do # ... end

我的问题是,为什么这样做呢?将应用程序代码保留在数据库主机(可能甚至没有安装Ruby)并从生产框运行迁移不是更清晰吗?

数据库服务器运行迁移,因为它是数据库的“负责人”.

人们还可以想象安全策略只允许从数据库服务器本身创建/删除/更改表.

如果在迁移期间加载了数据,甚至可能会有轻微的性能提升,尽管这是一个糟糕的想法.

如果您需要引用数据库主机并且不需要代码的副本,则可以使用以下内容:

为什么选择在数据库主机上同步ruby-on-rails应用程序副本?

role :db, 'dbhost', :no_release => true

在应用程序服务器上运行迁移的示例代码:

role :app, 'apphost', :runs_migrations => true task :migrate, :roles = :app, :only => {:runs_migrations => true } do #... end