本指南解释了为什么需要使用环境变量来连接数据库以及如何在 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
现在切换到应用程序目录:
$ 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
[...]
同样,您必须更换 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'] %>
[...]

添加数据库用户角色和环境变量后,按 ESC
键和类型 :wq
保存更改并退出文件。
最后,使用以下命令为 Rails 应用程序创建数据库:
$ rake db:create
该命令将创建两个数据库,即 ostechnixapp_development
和 ostechnixapp_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 默认测试页面:

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