如何找到生成database.yml文件的代码?
How to find the code that generates the database.yml file?
我正在接手一个旧的 Rails 项目。这是重构公司中许多旧技术的更大公司努力的一部分。在众多变化中,我们将 MySQL 从 5.1 升级到 5.7,我们得到了一个新的、更强大的服务器作为我们的数据库服务器。现在我想将 Rails 应用程序指向新服务器。
在我进行开发的 Mac 上,我有一个如下所示的数据库文件:
# MySQL. Versions 5.0+ are recommended.
#
# Install the MYSQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: 5
socket: /var/lib/mysql/mysql.sock
development:
<<: *default
database: wawa_onset_development
username: root
password:
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: wawa_onset_test
username: root
password:
staging:
<<: *default
database: wawa_onset_stage
username: onset_stage
password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
preview:
<<: *default
database: wawa_onset_preview
username: onset_preview
password: <%= ENV['PREVIEW_DATABASE_PASSWORD'] %>
production:
<<: *default
database: wawa
username: onset_prod
password: <%= ENV['PRODUCTION_DATABASE_PASSWORD'] %>
要将我的代码部署到暂存区,我会:
vagrant up
vagrant ssh
cap staging deploy
部署过程会创建一个 database.yml 文件,如下所示:
staging:
adapter: mysql2
encoding: utf8
pool: 5
socket: /var/lib/mysql/mysql.sock
database: wawa_onset_stage
username: onset_stage
password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
host: localhost
我需要更改 "host" 和 "database" 以及 "username",但我不知道在哪里更改这些东西。我们没有将 database.yml 保留在 git 存储库中,因此我无法编辑该文件并提交它。我需要找到生成 database.yml 文件的模板。这通常存储在哪里?什么 gem 通常用于生成 database.yml 文件?
它可能不是 gem 我的猜测是它在您应用程序的共享文件夹中。
标准的 Capistrano 部署应用程序具有类似
的结构
shared/
repo/
current -> /path/to/releases/20160226153309
releases/
您的 database.yml 可能在 shared/config
文件夹中
你的 deploy.rb 可能有类似
的东西
set :linked_files, %w{config/database.yml config/secrets.yml}
但是您的 deploy.rb 将拥有在服务器上定位文件所需的信息。
我正在接手一个旧的 Rails 项目。这是重构公司中许多旧技术的更大公司努力的一部分。在众多变化中,我们将 MySQL 从 5.1 升级到 5.7,我们得到了一个新的、更强大的服务器作为我们的数据库服务器。现在我想将 Rails 应用程序指向新服务器。
在我进行开发的 Mac 上,我有一个如下所示的数据库文件:
# MySQL. Versions 5.0+ are recommended.
#
# Install the MYSQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: 5
socket: /var/lib/mysql/mysql.sock
development:
<<: *default
database: wawa_onset_development
username: root
password:
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: wawa_onset_test
username: root
password:
staging:
<<: *default
database: wawa_onset_stage
username: onset_stage
password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
preview:
<<: *default
database: wawa_onset_preview
username: onset_preview
password: <%= ENV['PREVIEW_DATABASE_PASSWORD'] %>
production:
<<: *default
database: wawa
username: onset_prod
password: <%= ENV['PRODUCTION_DATABASE_PASSWORD'] %>
要将我的代码部署到暂存区,我会:
vagrant up
vagrant ssh
cap staging deploy
部署过程会创建一个 database.yml 文件,如下所示:
staging:
adapter: mysql2
encoding: utf8
pool: 5
socket: /var/lib/mysql/mysql.sock
database: wawa_onset_stage
username: onset_stage
password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
host: localhost
我需要更改 "host" 和 "database" 以及 "username",但我不知道在哪里更改这些东西。我们没有将 database.yml 保留在 git 存储库中,因此我无法编辑该文件并提交它。我需要找到生成 database.yml 文件的模板。这通常存储在哪里?什么 gem 通常用于生成 database.yml 文件?
它可能不是 gem 我的猜测是它在您应用程序的共享文件夹中。
标准的 Capistrano 部署应用程序具有类似
的结构shared/
repo/
current -> /path/to/releases/20160226153309
releases/
您的 database.yml 可能在 shared/config
文件夹中
你的 deploy.rb 可能有类似
的东西set :linked_files, %w{config/database.yml config/secrets.yml}
但是您的 deploy.rb 将拥有在服务器上定位文件所需的信息。