本指南解释了为什么需要使用环境变量来连接数据库以及如何在 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 ' 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 应用程序中使用环境变量配置数据库连接。 如果您是唯一的开发人员,那么您可以简单地使用默认的数据库配置文件。
资源:
- 在 Rails 中配置数据库
数据库环境变量LinuxMySQLPostgreSQLRuby on Rails