環境変数がよく消える
\\\SLACK用に環境変数を設定するぞ!!!///
export SLACK_API_TOKEN=xoxb-HOGEHOGE123456789
bundle exec ruby bot.rb
...よし、上手く動いた!!!
ターミナルを落として寝るか!!!
2日後のワイ将
undefined local variable or method `event' for main:Object (NameError)
なんやコレ...。
export
コマンドを打っても、環境変数がSLACK_API_TOKEN
が出てこない...。
原因と解決策
~/.bashrc
、もしくは~/.bash_profile
を開き、環境変数を追加しましょう。vimで開くとそのまま編集できるので良いと思います。私の場合は、こんなふうになっていました。
export PATH=/usr/local/bin:$PATH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/bin:$PATH"
export PATH=$HOME/.nodebrew/current/bin:$PATH
eval "$(rbenv init -)"
上記にexport SLACK_API_TOKEN=xoxb-HOGEHOGE123456789
を追加し、ターミナルを開き直すことで、いつでも環境変数SLACK_API_TOKEN
を参照することができるようになりました。
環境変数はログアウト時に消えるそうなので、毎回読み込みを行う~/.bashrc
、または~/.bash_profile
に書いておくことで環境変数を保持することができそうです。
変数はターミナルからログアウトもしくはexitするまで保持
余談
実は環境変数を定義するshellを誤ってSLACK_API_TOKEN
とgithubにpushしてしまい、以下のようなメールがSlackから飛んできました。よく見つけたなと、逆に驚きです...。
Your authentication tokens were found in a public code repository alongside a custom integration or bot that you (or someone with access to your token) wrote and published publicly on GitHub or a similar code-sharing site.
あなたの認証トークンは、あなた(またはあなたのトークンへのアクセス権を持つ人)が書いたとGitHubのまたは同様のコード共有サイトに公に発表されたカスタム統合やボットと一緒に公共のコードリポジトリで発見されました。
これでそのような過ちを犯すこともなく、安心してbotが作成できるようになりますね。