Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

出荷するようにRailsアプリを構成する方法

最初の本番アプリを起動する準備ができたら、外部サービスと通信するときが来ました。あなたはまだすべてを接続する必要があります。 では、開発マシンで物事をより複雑にすることなく、本番環境でサービスを構成するための最良の方法は何ですか?

環境を設定する

本番アプリを構成するための今日のベストプラクティスは、環境変数(ENV["REDIS_HOST"])を使用することです。 -見た目)

しかし、なぜですか?

  • 本番キーを誤ってコミットすることはより困難です。

    注意を払っていない場合は、git push 重要な秘密鍵が含まれているファイル。そして、それは費用のかかる間違いかもしれません。

  • 構成は、環境変数の目的です。

    環境変数は、ほぼすべての種類のシステムでアプリを構成するための一般的な方法です。他の多くのプログラム(Rubyなど)は構成に環境変数を使用するため、独自のアプリで試すことだけが理にかなっています。

  • 環境変数は本番環境で簡単に設定できます。

    Herokuには、環境変数を簡単に設定するためのWebUIとコマンドラインツールがあります。また、独自のサーバーを構築している場合は、ChefやDockerなどのサーバー管理ツールを使用すると環境変数を簡単に設定できます。

Rails側ではどのように見えますか?

これは、環境変数に依存するアプリがそれ自体を構成する方法です。

config / my_service.yml
production:
  host: <%= ENV["MY_SERVICE_HOST"] %>
  port: <%= ENV["MY_SERVICE_PORT"] %>
config / initializers / my_service.rb
my_service_config = Rails.application.config_for(:my_service)
    
my_service = MyService.new(my_service_config["host"], my_service_config["port"])

イニシャライザは、Rails4.2のconfig_forを使用します 適切な.ymlを見つける方法 ファイルを作成し、適切な環境を選択します。

次に、config_for ERBを実行します my_service.yml内のコード 、およびMY_SERVICE_HOSTを取得します およびMY_SERVICE_PORT 環境から。それらの値をMyServiceに渡します 。

また、イニシャライザをENV["MY_SERVICE_HOST"]から読み取ることもできます。 直接。しかし、私はそれらを.ymlに保持することを好みます ファイル、理由はすぐにわかります。

開発中のアプリの構成

環境変数は本番環境に適しています。 ただし、本番構成を設定したら、開発モードとテストモードをどのように処理しますか?

いくつかのオプションがあります。しかし、私は通常、Railsのconfig/secrets.ymlの規則に従います。 :本番環境では環境変数を使用し、開発とテストでは非秘密の値をハードコードします。

開発環境とテスト環境では、config/my_service.yml 次のようになります:

config / my_service.yml
production:
  host: <%= ENV["MY_SERVICE_HOST"] %>
  port: <%= ENV["MY_SERVICE_PORT"] %>
  
development:
  host: localhost
  port: 8081
  
test:
  host: localhost
  port: 8081

驚くべきことに、イニシャライザはまったく同じままです。 このファイルの値は開発環境とテスト環境で使用され、本番環境は環境変数から値を取得します。

しかし、なぜこれらの値をハードコーディングするのでしょうか?

  • 構成値は見やすく、変更しやすいです。

    新しい機能を試すときに、構成を微調整できます。これは、開発では必要ですが、本番環境ではそれほど必要ありません。

  • 新しい人が始めるのは簡単です。

    必要なすべてのサンプル構成がgitリポジトリにチェックインされている場合、新しい開発者はアプリのクローンを作成して実行するだけです。アプリを機能させるために適切な値を設定する必要はありません。

  • 環境変数の競合について心配する必要はありません。

    おそらく、開発マシンでは、単一の本番マシンにデプロイするよりも多くのアプリで作業することになります。システム全体の環境変数を使用してこれらすべてのアプリを構成した場合、そのうちの2つが互いに踏みにじる可能性が高くなります。

したがって、本番環境で環境変数を使用して、.ymlをハードコーディングしてみてください。 開発中の構成。簡単で読みやすく、Railsにはまさにそのような種類の構成ファイルを処理するためのサポートが組み込まれています。

開発のための別のオプション

開発モードで構成を処理する別の方法があります:dotenv。見た目はきれいですが、自分のアプリではまだ試していません。

dotenvを使用すると、環境変数を.envという名前のファイルに入れることができます。 Railsアプリのルートディレクトリにあり、それらの値はアプリによって取得されます。 開発環境は本番環境のように機能するため、これは便利です。これは、本番環境でのみ発生するバグを回避するための良い方法です。

いつかやってみようと思います。しかし、今のところ、.ymlより便利なものは見つかりませんでした。 およびconfig_for

ほとんどの本番アプリには、なんらかの構成が必要です。 次のアプリをデプロイするときは、.ymlを使用してみてください 構成するために、本番環境の環境変数によって入力されたファイル。 期待する柔軟性、シンプルさ、信頼性が得られます。

本番アプリを構成する別の方法はありますか?コメントを残してください、私はそれについて聞きたいです!


  1. PC で Telegram を使用する方法

    Telegram は、プライベート メッセージングの世界で気密性の高いセキュリティを備えた数少ないアプリの 1 つとして有名になりました。電話番号ではなく、新しい人とつながるためのユーザー名に依存しているため、自分の人生をプライベートに保ちたい人に人気の選択肢になっています.すべてが安全なプライベート通信で終わるわけではありませんが、ユーザーが物事を目立たなくするのに役立ちます. ユーザーベースが着実に増加しているため、一部のユーザーがデスクトップからテレグラムにアクセスしたいと考えていることは驚くことではありません.ありがたいことに、すべての一般的なメッセージング プラットフォームと同様に

  2. Windows 10 で電話アプリを使用する方法

    携帯電話から PC に写真を転送するのに苦労していませんか?自分自身に電子メールで送信したり、USB 経由で電話を接続したりして、さまざまなデバイスのファイルにアクセスしますか?そう言えば、Windows 10 の最新機能を使用することで、これらの細心の注意を払う方法を取り除くことができます。はい、Your Phone で可能です。 アプリは、Windows 10 で利用できます。スマホ同期アプリは、PC とスマートフォンを頻繁に切り替えるというジレンマから解放されます。 PC で作業している間、これは携帯電話の写真にアクセスできないという本当のハードルになる可能性があります. Micros