[联合开发]如何使用” dotenv-rails”使用环境变量管理您不想在GitHub上发布的密码等


介绍

在通过Rails联合开发进行建筑环境开发时,每个开发环境的DB密码等设置都不同。如果您直接在database.yml等中输入个人设置,则该设置仅在某些环境中有效。另外,我也不想在GitHub上发布密码之类的信息。

因此,通过引入gem(dotenv-rails)可以管理每个开发环境不同的信息(例如密码)作为环境变量,它被设置为与每个开发环境相对应,并且不会在GitHub上发布。 。

环境

  • macOS大苏尔
  • rails6.1.1
  • Ruby 2.7.2
  • 的MySQL 5.7.31

安装dotenv-rails gem

将以下内容写入

Gemfile。

ruby文件

1
gem 'dotenv-rails'

执行以下命令来安装gem。

1
$ bundle install

创建一个.env文件并设置环境变量

在要设置

环境变量的应用程序的根目录中创建一个.env文件。
在根目录中执行以下命令。

1
$ touch .env

在创建的.env文件中描述环境变量。
例如,对于数据库用户名和密码,请进行如下设置。

.env

1
2
DB_USERNAME = '********' # 使用したいユーザーネームを記述
DB_PASSWORD = '**************' # 使用したいパスワードを記述

调用环境变量

要调用在

.env文件中设置的环境变量,编写如下。
在这种情况下,我们正在调用用户名和密码。

数据库

1
2
3
4
5
6
7
8
9
10
11
...

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DB_USERNAME'] %> # 環境変数で呼び出し
  password: <%= ENV['DB_PASSWORD'] %> # 環境変数で呼び出し
  socket: /tmp/mysql.sock

...

现在您可以通过在.env中写入每个开发环境使用不同的设置值,例如密码。

.gitignore设置

如果按原样推送,.env文件将在GitHub上发布,因此将以下内容添加到.gitignore文件,并将其设置为不发布。

.gitignore

1
/.env

现在.env文件不再由Git管理,您可以放心将代码发布到GitHub。

创建.env.sample

创建一个.env.sample文件,以便每个人都知道在.env中设置的内容。 (.env.sample文件由Git管理。)
我认为每个项目的设置项都会有所不同,但是我将仅描述即使泄漏的OK虚拟数据和设置项的键。
例如,对于DB用户名和密码,编写如下。

.env.sample

1
2
DB_USERNAME = 'mysqlのユーザーネームを記入’
DB_PASSWORD = '設定したパスワードを記入'

现在,当您从GitHub克隆项目时,复制此.env.sample并创建.env文件将使设置更加容易。

如果您已推送.env文件

如果将

.env文件推送到GitHub,则仅将其添加到.gitignore不会反映设置,并且不会从Git管理中排除该设置。 (即使它已在.gitignore中注册,如果仍保留在git缓存中,似乎也将对其进行管理。)
在这种情况下,执行以下命令删除缓存。

1
$ git rm -r --cached .

这不再由Git管理。

概括

这是编程初学者在Rails联合开发中负责构建第一个环境开发项目时所遇到的问题和教训的摘要。

如果内容有任何错误,请您提出宝贵意见,我们将不胜感激。