はじめに
現在友人依頼のアプリケーション作成中です
環境変数の導入方法毎度忘れてしまうので、メモしておきます!
環境変数とは
OSが持つ変数のことです
APIの秘密鍵などGitHubにあげたくない情報を、情報漏洩を防ぐために利用されます
環境変数を管理することができるgem「dotenv-rails」を使用していきたいと思います
dotenv-railsを導入
Gemfileに追記する
Gemfile.
:
gem 'dotenv-rails'
bundle installを実行し、envファイルを作成
$ bundle install
$ touch .env
環境変数の設定方法
設定したい環境変数をenvファイルに入力します
.env
ADMIN_EMAIL="任意のemailを入力"
ADMIN_PASSWORD="任意のパスワードを入力"
今回はseedファイルで環境変数を呼び出します
seeds.rb
# Admin データの作成
Admin.find_or_create_by!(email: ENV['ADMIN_EMAIL']) do |admin|
admin.password = ENV['ADMIN_PASSWORD']
end
seedファイルに追加したデータを作成します
$ rails db:seed
Githubにenvファイルをアップしないようにする
.gitignoreファイルの最終行に/.envを追加する
.gitignore
:
.env
最後にコマンドを実行し、envファイルが表示されなければ問題ありません!
$ git status
コマンド実行で、envファイルが入力されている場合
.envファイルをgitignoreファイルから除外できない時の対処法
こんな感じのログがでました
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .gitignore
ec2-user:~/environment/my_crop_plan (feature/dotenv_rails) $ git status
On branch feature/dotenv_rails
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .env
modified: .gitignore
modified: Gemfile
modified: Gemfile.lock
modified: db/seeds.rb
下記のコマンド実行で無事解決されました!
$ git restore --staged .env
$ git add .
$ git status
On branch feature/dotenv_rails
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: .gitignore
modified: Gemfile
modified: Gemfile.lock
modified: db/seeds.rb
git restore --staged .env
することで、一度ステージされている情報をステージから削除し、
git add .
することで解決しました!
さいごに
知人はこの確認ができていなかったのか、.envファイルがgitHubにアップされてしまっていたようです💦
.envが除外されているかは必ず確認するようにしましょう!