はじめに
githubで有名なgemのコードを読んでみると、全く知らない文字列が羅列していて、そもそもどんな風にコードを読めばいいかわからないと言うことを何度も経験しました。
プログラミングを始めたばかりは(まだまだ初学者ですが。。)わからないものが羅列していると何が何やら訳が分からなくなり、単純に恐くて手をつけたくないと思ってしまっていました。
でも一つ一つの単語を調べて理解が少しできると怖さが激減するんだな、ということを経験の中で知ることができました。
少しでも疑問に感じたことはそのままにせず調べて、備忘録としてアウトプットをしていこうと思います。
ENV.fetch(“~”)の文字列が怖かった
現在ポートフォリオを作成している中で、twitter apiを使ってtwitterのアカウントでログインができる機能を実装しています。
その機能のためにネットの記事を参考にしていた際に、下記のコードが出てきました。
ENV.fetch("TWITTER_KEY")
いつもコードを書くときは大抵小文字なのに、ENVは大文字と言うだけで少し怖っ、、と思ってしました笑
ネットの記事をそのまま読んでも実装はできると思いますが、ここで意味を理解すれば知らないことへの苦手意識が減っていくと思ったのでちゃんと意味を理解するためにENV.fetchについて調べました。
ENV.fetchは思ったより簡単だった
ENV.fetchは調べてみるととても簡単なものでした。
一言でまとめると、「環境変数を.envファイルから持ってくる」ということです。
twitter apiを使用するためには"api key"と"api secret key"が必要で作成をする必要があります、このkeyを悪意のある人に見られると色々な悪さができてしまうので、絶対に他人に見られてはいけません。
しかし、githubでコードを公開した時にkeyを使用する時に、その値がそのままファイルに記述されていたとしたら、誰でもkeyが見れる状態になってしまいますよね。
そこで.envファイルを作成して、下記のようにkeyとvalueを記載します。
key = value
//.envを使用する場合は、'dotenv-rails'というgemが必要です。
そして必ず、.gitignoreファイルに.envを追加してgit管理外にします。
(この手順を踏まないと、、githubに.envファイルがアップロードされなくなります)
今回のように、twitter apiを使用する場合だと下記のようになります。
TWITTER_KEY="取得したapi key"
このように.envでkeyを環境設定に設定すれば、api keyを使用したい場合はファイルに直接値を記述しなくても、下記の式で.envファイルからkeyに紐づいた値を勝手に持ってきてくれるようになります!
ENV.fetch("TWITTER_KEY")
ENV.fetchではなくENVのみでも良い
また今回調べていく中で、fetchを使用せずに下記の式でも値を持ってこれると言うことを知りました。
ENV["TWITTER_KEY"]
fetchがある時とない時の違いは、設定したkeyが見つからない時に、nilを返すか設定したデフォルト値を返すかどうかということでした。
何も考えずにfetchを使わずに、必要に応じて使用するか決めたいですね!
//TWITTER_KEYが存在しない時
ENV["TWITTER_KEY"] =>nilを返す
ENV.fetch("TWITTER_KEY", "default") =>設定したデフォルト値(今回だとdefault)を返す
ENV['TWITTER_KEY'] || 'default' =>fetchを使わなくてもデフォルト値を設定できる
終わりに
最初はENVという見慣れない文字列に苦手意識を感じてしまいましたが、調べてみるとめちゃくちゃ簡単でした!
意味がわかっていないと怖さを感じてしまいますが、調べると一気に親近感が湧くものですね。
これからも怖いと感じたものを積極的に調べて理解していこうと思いました。