📜  rails 更改数据库连接 - Ruby (1)

📅  最后修改于: 2023-12-03 15:04:47.274000             🧑  作者: Mango

Rails 更改数据库连接

在开发 Rails 应用时,我们通常会使用数据库来存储和管理数据。但有些情况下,我们需要更改数据库连接,比如需要切换到另一个数据库,或者修改数据库连接信息。

下面是一些修改数据库连接的方法。

修改数据库配置文件

Rails 应用的数据库配置文件位于 config/database.yml,我们可以在该文件中修改数据库连接信息。比如,如下是一个 MySQL 数据库的配置示例:

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV.fetch("DB_USERNAME") { "root" } %>
  password: <%= ENV.fetch("DB_PASSWORD") { "" } %>
  host: <%= ENV.fetch("DB_HOST") { "localhost" } %>
  port: <%= ENV.fetch("DB_PORT") { 3306 } %>

development:
  <<: *default
  database: myapp_dev

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

我们可以根据需要修改 usernamepasswordhostport 等信息来连接不同的数据库。需要注意的是,如果我们修改了 database.yml 文件,我们需要重启 Rails 应用才能使更改生效。

使用命令行参数

在某些情况下,我们可能需要在启动 Rails 应用时为其指定数据库连接信息。我们可以通过使用命令行参数来实现。比如,如下命令可以为 Rails 应用指定 MySQL 数据库的连接信息:

$ rails server --port=3001 --database=mysql://root:password@localhost/myapp_development

其中,--database 参数可以指定数据库连接信息,mysql:// 表示使用 MySQL 数据库,rootpassword 分别表示数据库用户名和密码,localhost 表示数据库主机名,myapp_development 表示数据库名称。需要注意的是,这种方法只会在当前启动实例中生效,关闭应用后,下次启动应用时还需要再次指定连接信息。

使用环境变量

我们也可以使用环境变量来设置数据库连接信息。比如,我们可以将连接信息保存在 .env 文件中,然后在 config/database.yml 文件中引用。如下示例:

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>
  port: <%= ENV.fetch('DATABASE_PORT') { 3306 } %>

development:
  <<: *default
  database: myapp_dev

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

.env 文件中的内容如下:

DATABASE_USERNAME=root
DATABASE_PASSWORD=password
DATABASE_HOST=localhost
DATABASE_PORT=3306

这种方式可以灵活地在不同环境下修改数据库连接信息,比如在开发环境下使用本地数据库,在测试环境下使用远程数据库。

结语

以上就是修改 Rails 数据库连接的方法。我们可以根据实际情况选择合适的方式来修改数据库连接信息,以满足我们的需求。