在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

接下来,在您的用户的配置文件中使用数据库用户密码添加新的环境变量,例如 ~/.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应用程序 http://ip-address:3000 网址。 Rails的默认测试页面将为您打招呼:

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

就像我已经说过的那样,如果您不想将数据库密码透露给其他开发人员,则应在Rails应用程序中使用环境变量配置数据库连接。 如果您是唯一的开发人员,则只需使用默认的数据库配置文件即可。

资源:

数据库环境变量LinuxMySQLPostgreSQLRuby on Rails

Sidebar