15

Rails サーバーで MongoID を試していて、環境変数をどこでどのように設定するかについて混乱しています。

config/mongoid.ymlデフォルトのテンプレートは以下を提供します:

defaults: &defaults
  host: localhost

...

# set these environment variables on your prod server
production:
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>

私の質問は、これらはRailsのどこかに設定されていますか? それともシステムレベルですか?もしそうなら、有効にするためにユーザーアカウントにログインする必要がないように、どこで/どのように設定するのですか?

4

2 に答える 2

15

ENV ハッシュには、rails プロセスが開始されたときのシステム環境からの値が含まれます。

これらは、サーバーまたはプログラムを開始する前にコマンドラインで設定できます。たとえば、bash の場合:

export MONGOID_USERNAME='username'

これらは、プロファイルに追加しない限り、シェルの寿命にのみ有効ですが、Web サーバーがそのプロファイルを使用しない可能性が高いため、ローカル開発にのみ役立ちます。

たとえば、Apache で SetEnv を使用して設定することもできます。例えば:

<Location /app >
    SetEnv MONGOID_HOST 'localhost'
    SetEnv MONGOID_PORT '8883'
    SetEnv MONGOID_USERNAME 'username'
</Location>

これは、Apache 構成で SetEnv が有効な場所ならどこでもかまいません。これは、アプリケーションが存在するコンテキストと同じです。

ベスト プラクティスについてのあなたのコメントに関して、一部の人々はサンプルの yml 構成ファイルをソース管理に配置し、ソース管理config/*.ymlからのファイルを無視します。リポジトリのクローンを作成する場合、例をコピーして正しい値に修正することは、rake tmp:create を実行して tmp フォルダー構造を作成するなど、セットアップの一部です。

于 2011-02-11T20:44:37.253 に答える