在 Rails 中使用环境变量配置数据库连接

本指南解释了为什么需要使用环境变量来连接数据库以及如何在 Linux 的 Rails 应用程序中使用环境变量配置数据库连接。

为什么要使用环境变量来配置数据库?

每个 Rails 应用程序都将与其各自的数据库交互。 在 Rails 应用程序中有两种连接数据库的方法。 您可以通过名为的数据库配置文件连接到数据库 config/database.yml 或使用名为的环境变量 ENV['DATABASE_URL']. 我们已经向您展示了如何使用 MySQL数据库 或一个 PostgreSQL 数据库. 在这两个指南中,我们使用 config/database.yml 文件。

如果您是唯一一个在 Rails 项目中工作的人,则可以将数据库凭据存储在 config/database.yml 文件。 但是,如果项目托管在公共 Git 存储库中并且许多开发人员正在开发它,则不建议将密码等敏感信息存储在 config/database.yml 文件。 此外,每个开发人员的数据库详细信息可能不同,即用户名和密码。 每次我们推送代码时,都会有一个文件发生冲突。 这就是为什么我们需要将数据库凭据存储在环境变量中,而不是直接将其写入数据库配置文件中。

在 Rails 应用程序中使用环境变量配置数据库连接

我假设你的 Linux 机器上安装了最新的 Ruby on Rails。 如果您尚未安装 Ruby on Rails,请参阅以下指南。

  • 如何在 Linux 中安装 Ruby On Rails

接下来,创建一个新的 Rails 应用程序。 如果想将 MySQL 与 Rails 应用程序一起使用,请运行以下命令创建一个新的 Rails 应用程序,即 ostechnixapp

$ rails new ostechnixapp -d mysql

如果您想将 PostgreSQL 与 Rails 应用程序一起使用,请创建名为的新 Rails 应用程序 ostechnixapp 如下所示:

$ rails new ostechnixapp -d postgresql

接下来,在用户的配置文件中添加带有数据库用户密码的新环境变量,对于 example ~/.bashrc.

$ echo 'export OSTECHNIXAPP_DATABASE_PASSWORD="Database_User_Password"' >> ~/.bashrc

在上面的命令中,替换 "OSTECHNIXAPP" 使用您的应用程序名称和 "Database_User_Password" 使用您的实际数据库用户密码。

来源 ~/.bashrc 文件以立即更新更改:

$ source ~/.bashrc
将环境变量添加到 .bashrc 文件

现在切换到应用程序目录:

$ cd ostechnixapp/

编辑应用程序的数据库配置文件:

$ vi config/database.yml

如果您使用的是 MySQL,请将我们添加到的数据库用户名和环境变量添加到 ~/.bashrc 上一步中的文件,在 default 部分。 这是我在 MySQL 配置文件中添加的内容:

[...]
default: &default
   adapter: mysql2
   encoding: utf8mb4
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   username: root
   password: <%= ENV['OSTECHNIXAPP_DATABASE_PASSWORD'] %>
   socket: /var/run/mysqld/mysqld.sock
[...]
使用环境变量配置 MySQL 数据库连接

同样,您必须更换 OSTECHNIXAPP_DATABASE_PASSWORD 使用正确的环境变量。

如果您使用的是 PostgreSQL,请在下面添加数据库角色和环境变量 default 部分如下:

[...]
default: &default
   adapter: postgresql
   encoding: unicode
   # For details on connection pooling, see Rails configuration guide
   # https://guides.rubyonrails.org/configuring.html#database-pooling
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   username: ostechnix
   password: <%= ENV['OSTECHNIXAPP_DATABASE_PASSWORD'] %>
[...]
使用环境变量配置 PostgreSQL 数据库连接使用环境变量配置 PostgreSQL 数据库连接

添加数据库用户角色和环境变量后,按 ESC 键和类型 :wq 保存更改并退出文件。

最后,使用以下命令为 Rails 应用程序创建数据库:

$ rake db:create

该命令将创建两个数据库,即 ostechnixapp_developmentostechnixapp_test.

Created database 'ostechnixapp_development'
Created database 'ostechnixapp_test'

现在在名为的内置 Web 服务器上启动 Rails 应用程序 彪马 使用命令:

$ rails server -b 0.0.0.0

打开您的 Web 浏览器并通过导航到访问 Rails 应用程序 https://ip-address:3000 网址。 您将看到 Rails 默认测试页面:

Ruby on Rails 默认测试页面Ruby on Rails 默认测试页面

和我一样,如果您不想将数据库密码透露给其他开发人员,您应该在 Rails 应用程序中使用环境变量配置数据库连接。 如果您是唯一的开发人员,那么您可以简单地使用默认的数据库配置文件。

资源: