Ruby: シークレット(環境変数)の管理
このドキュメントは高度な使用法ガイドの一部です。完全なガイドはこちらからご覧いただけます:Rubyデプロイメントをさらに進める。
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供する、すぐに使えるRubyクラウドソリューションを提供しています。
- シンプルな
git pushでアプリケーションを数秒でデプロイ。- 独自のドメイン名を使用し、HTTPS証明書の自動設定による強化されたセキュリティを享受。
- 自動バックアップ、ワンクリック更新、そしてシンプルで透明性があり、予測可能な価格設定で安心を提供。
- プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティを実現。
時間を節約し、生活を簡素化:StackheroのRubyクラウドホスティングソリューションを試すのに5分しかかかりません!
データベースやサードパーティサービスのトークンやパスワードなどのシークレットを管理する必要がある時が来ます。これらのシークレットを安全に保管することが重要です。リポジトリやコードにシークレットを直接埋め込むことは、重大なセキュリティリスクをもたらすため避けてください。
環境変数には2つの大きな利点があります。
- シークレットがGitリポジトリに保存されないため、ソースコードにアクセスされた場合のリスクが軽減されます。
- 異なる環境で異なる資格情報を使用できます。例えば、本番環境では本番データベースに接続し、開発中は開発データベースを使用します。
開発用の環境変数の設定
開発用には、プロジェクトのルートに.envファイルを作成します。このファイルはGitから除外され、コミットされることはありません。dotenv gemを使用して.envファイルを自動的に読み込みます。
まず、dotenv-rails gemをGemfileに追加します。
# Gemfile
gem 'dotenv-rails', groups: [:development, :test]
次に、gemをインストールします。
bundle install
次に、プロジェクトのルートに.envファイルを作成し、変数を追加します。
RAILS_ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
最後に、.envファイルがGitで無視されることを確認します。
echo '.env*' >> .gitignore
ステージングおよび本番用の環境変数の設定
ステージングおよび本番用には、.envファイルは安全でも実用的でもありません。Gitリポジトリに保存できないためです。代わりに、StackheroはRubyサービスの設定で環境変数を直接管理するための安全なソリューションを提供します。
これらの変数は、StackheroダッシュボードでRubyサービスを選択し、「設定」ボタンをクリックして設定できます。
環境変数へのアクセス
Rubyでは、ENVを使用して環境変数に簡単にアクセスできます。例えば、DATABASE_PASSWORDを取得するには、次のように使用します。
ENV['DATABASE_PASSWORD'] # => 'secretPassword'
環境変数を使用してRabbitMQサーバーに接続する例を以下に示します。
require 'bunny'
class RabbitMQClient
def initialize
@connection = Bunny.new(hostname: ENV['RABBITMQ_HOST'],
username: ENV['RABBITMQ_USERNAME'],
password: ENV['RABBITMQ_PASSWORD'])
@connection.start
end
def publish(queue_name, message)
channel = @connection.create_channel
queue = channel.queue(queue_name)
channel.default_exchange.publish(message, routing_key: queue.name)
end
def close
@connection.close
end
end
開発プラットフォームでは、.envファイルに次のような内容が含まれるかもしれません。
RABBITMQ_HOST='127.0.0.1'
RABBITMQ_USERNAME='developmentUser'
RABBITMQ_PASSWORD='developmentPassword'
本番およびステージング用には、StackheroダッシュボードのRubyサービス設定で環境変数を以下のように定義します。
RABBITMQ_HOST='<XXXXXX>.stackhero-network.com'
RABBITMQ_USERNAME='production'
RABBITMQ_PASSWORD='secretProductionPassword'