1.背景
現在、RubyにてLINEBotを開発中です。
LINEBotのIDやトークンなど、「必要だけどセキュリティ上隠したい」データを格納する
dotenvを今回使用したので、備忘録としてまとめます。
2.環境
- mac.os バージョン10.15.6
- Ruby 2.7.3
- psql (PostgreSQL) 12.6
3.手順
①gemの導入
Gemfile上に下記のコードを記述してbundle
(または bundle install
)を行う
gem "dotenv"
②.envファイルの作成
今回はBotのアカウント(チャネル)に必要な項目を追記しました。
※隠したいファイルなのでGitの管理から外すよう.gitignore
を設定しましょう。
LINE_CHANNEL_ID = "12345678"
LINE_CHANNEL_SECRET = "XXXXXXXXX"
LINE_CHANNEL_TOKEN = "XXXXXXXXX"
③loadメソッドを記述する
.envを読み込ませたい場所(今回はapp.rbとしました)に追記します。
ENVという配列に格納されているので、ENV['設定した項目']
で取り出すことができます。
Dotenv.load
# (例)LINE_CHANNEL_ID を取り出したい
puts ENV["LINE_CHANNEL_ID"] #→12345678
4.補足1(コンソール使用時)
今回の場合、Dotenv.loadで読み込んだ後に取り出すことができるので、例えばコンソール上で取り出した場合はnil
(該当の項目は未設定ということ)が返ってきます。
bot % irb
irb(main):001:0> ENV['LINE_CHANNEL_ID']
=> nil
5.補足2(隠しファイルに記述する方法)
その他にも、「~/.bash_profile」や「~/.bashrc」に記述する方法があります。
「~/.bash_profile」はログイン時のみ設定されるファイルで、「~/.bashrc」はbashを起動するたびに毎回設定されるファイルです。
シェルにbashを利用している場合、ホームディレクトリに.bashrc
という隠し属性(ドット)ファイルがあります。vimをインストールしている場合、下記のコマンドで起動するので編集することで記述ができます。
$ vi ~/.bashrc
bashrcに記述します。
vimはi
でインサートモードに切り替わり、書き込むことができます。
esc
を押した後、:wq
を入力すると、保存して終了できます。
export LINE_CHANNEL_ID = "12345678"
設定内容をすぐ反映したい際は、下記のコードを実行します。
$ source ~/.bashrc
puts ENV['LINE_CHANNEL_ID'] #=> 12345678
6.参考
1.dotenv でパスワードやトークンを隠す
2..gitignore の書き方
3.Ruby + SinatraでLINE Botを作ろう
4.【Ruby】ENVオブジェクトで環境変数として設定した値を取得する方法
5.パスを追加したい~.bashrc編~
6.dotenv
7.最後に
記事の感想や意見、ご指摘等あれば伝えていただけるとありがたいです。
読んでいただき、ありがとうございました。