Rubyで環境変数を使用する方法
環境変数はキーと値のペアであり、次のようになります。
KEY=VALUE
これらの変数を使用して、コンピューター内のすべてのプログラム間で構成オプションを共有します。
そのため、それらがどのように機能するか、およびENV
を使用してRubyプログラムからそれらにアクセスする方法を学ぶことが重要です。 特別な変数。
環境変数の例 :
- デフォルトのエディターの構成
- 宝石の場所をRubyに伝える(
GEM_PATH
/GEM_HOME
) - APIキーを、ソース管理(git)にコミットせずにアプリケーションに渡す
- オペレーティングシステムがバイナリファイル(Windowsでは.exe)を検索する場所を定義する
- Railsをテスト/開発/本番モードで開始する
env
を使用すると、すべての環境変数のリストを見つけることができます。 Linux/Macのコマンドとset
Windowsのコマンド。
例 :
PWD=/home/jesus SHELL=/usr/bin/zsh RUBY_ENGINE=ruby RUBY_VERSION=2.6.0 GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0 # ...>
リストはかなり長くなる可能性がありますが、覚えておく必要はありません。
gem env
を使用して、gem固有のすべての変数と構成を出力することもできます。 コマンド。
今 :
Rubyからこれらの環境変数にアクセスしたい場合は、使用できる特別なオブジェクトがあります。
それがどのように機能するかを発見しましょう!
Rubyでの環境変数の使用
Rubyには、ハッシュのように動作するこのENVオブジェクトがあり、使用可能なすべての環境変数にアクセスできます。
ここにいくつかの例があります…
持っているキーの数を確認できます :
ENV.size # 48
それらのリストを取得する :
ENV.keys
特定のキーにアクセスする :
ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"
map&selectなどの方法を使用することもできます:
ENV.select { |k,v| k.size < 4 }
しかし、Rubyの外部でこれらの環境変数をどのように設定しますか?
環境変数の設定方法
一度だけ使用する環境変数を設定できます。
このように :
API_KEY=1 ruby -e 'p ENV["API_KEY"]'
これをirbの外部のターミナルで使用すると、RubyはこのAPI_KEY
にアクセスできるようになります。 値。
これはAPIキーに役立ちますが、Railsモードを設定する場合にも役立ちます。
例 :
RAILS_ENV=production rails console
覚えておいてください :
これにより、現在起動しているこのプロセスにこの特定の環境変数が設定されます。
つまり、API_KEY=1 <command>
を実行すると ...
そのコマンドでのみ機能します!
この変数を、現在のターミナルセッションから起動する他のすべてのコマンドで使用する場合。
これを行う :
export API_KEY=1
今なら :
ruby -e 'p ENV["API_KEY"]'
1
を取得します 、接頭辞付きの変数がなくても。
警告 :
ENV
は使用しないでください Rubyアプリケーション内での構成の場合、それはその目的ではありません。 ENVは、Rubyの外部にある外部構成を読み取るためだけのものです。
内部構成オプションとしてdry-configurableのようなgemを試してください。
環境変数の重要な属性
これらの属性は(おそらく予期しない)動作を説明するため、役立つ場合があります。
- スナップショット 、環境変数はプログラムの起動時に設定され、外部の変更の影響を受けません
- 閉じた環境 、プロセス内の変数を変更しても(Rubyプログラムはプロセスです)、プロセス外の環境変数は変更されません
- 環境変数は永続的ではありません 、コンピュータを再起動したとき、または端末を閉じたときでも、環境変数への変更は失われます(
export
を使用した場合でも) Linux + Mac/set
Windowsの場合)
これらを覚えておいてください!
Railsクレデンシャル
Rails 5.2では、APIキーの管理に役立つ新しいシステムが導入されました。
クレデンシャルをconfig/credentials.yml.enc
に直接保存することで機能します 、これは暗号化されたファイルであり、master.key
がある場合にのみ読み取ることができます。 ファイル。
credentials.yml.enc
のみをコミットするという考え方です。 &あなたは鍵を秘密にしておきます。
新しいクレデンシャルをどのように追加しますか?
ええと、.enc
を編集することはできません 直接ファイルします。
代わりにこのコマンドを使用してください :
bin/rails credentials:edit
これはYAMLファイルです。正しくフォーマットしてください。
今 :
このようにRailsアプリからクレデンシャルを読み取ることができます...
Rails.application.credentials.github_api_key
ビデオチュートリアルを見る
概要
オペレーティングシステムの構成を管理し、APIキーを非公開に保つことができる便利なツールである環境変数について学習しました。
より多くの人が見つけられるように、この記事を友達と共有してください🙂
読んでくれてありがとう!
-
RubyでStructとOpenStructを使用する方法
Rubyの構造体とは何ですか? 構造体は組み込みのRubyクラスであり、値オブジェクトを生成する新しいクラスを作成するために使用されます。値オブジェクトは、関連する属性を一緒に格納するために使用されます。 ここに例があります : Point 2つの座標(x &y 。 このデータはさまざまな方法で表すことができます。 いいね : 配列[10, 20] ハッシュ{ x: 10, y: 10 } オブジェクトPoint.new(10, 20) 複数のPointを使用する場合 、オブジェクトアプローチを使用することをお勧めします。 しかし… これら2つの値を一緒に格納するた
-
Windows 10 で環境変数を設定する方法
環境変数は、PC で実行されているプログラムを構成するために使用されるグローバル値です。技術的に聞こえますが、実際には、さまざまなアプリが接続するための共有構成ストアにすぎません。 環境変数は個々のユーザー アカウントに関連付けられているため、ユーザーごとに異なる構成を使用できます。また、Windows がインストールされているディレクトリを常に指す %windir% などのグローバル システム変数もあります (例:C:Windows)。この値をハードコーディングする代わりに、アプリは Windows ディレクトリにアクセスする必要があるときに %windir% を参照できます。 多く