6

アプリ固有の構成をRailsに保存する必要があります。しかし、それは次のようにする必要があります。

  • 任意のファイル(モデル、ビュー、ヘルパー、コントローラー)で到達可能
  • 指定された(または指定されていない)環境。これは、各環境がenvironment.rbで指定された構成を上書きできることを意味します。

私はenvironment.rbを使用して、次のようなものを入れようとしました

USE_USER_APP = true

それは私にはうまくいきましたが、特定の環境で上書きしようとすると、たとえば、production.rbがRails:Initializer.runブロック内にあるように見えるため、機能しません。

それで、誰か?

4

6 に答える 6

11

Configatronを見てください:http ://github.com/markbates/configatron/tree/master

私はまだ使っていませんが、彼は現在積極的に開発していて、とても素敵に見えます。

于 2008-09-21T02:57:47.640 に答える
4

私は友人が昨日リカルドによって言及された解決策を設定するのを手伝っていました。これに似たものをYAMLファイルにロードすることで少しハックしました(ここのメモリから):

require 'ostruct'
require 'yaml'
require 'erb'
#config = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/config.yml"))
config = OpenStruct.new(YAML.load(ERB.new(File.read("#{RAILS_ROOT}/config/config.yml")).result))
env_config = config.send(RAILS_ENV)
config.common.update(env_config) unless env_config.nil?
::AppConfig = OpenStruct.new(config.common)

これにより、Rhtmlのように、構成にRubyコードを埋め込むことができました。

development:
  path_to_something: <%= RAILS_ROOT %>/config/something.yml
于 2008-09-21T11:52:27.543 に答える
4

最も基本的なことは、environment.rb からクラス変数を設定することです。Google アナリティクスでこれを行いました。基本的に、開発またはステージングがメトリックを歪めないように、使用している環境に応じて異なるキーが必要です。

これが私がやった方法です。

lib/analytics/google_analytics.rb

module Analytics
  class GoogleAnalytics
    @@account_id = nil

    cattr_accessor :account_id
  end
end

そして、その他の環境ファイルのいずれかで、environment.rb次のようにします。environments/production.rb

Analytics::GoogleAnalytics.account_id = "xxxxxxxxx"

次に、参照する必要がある場所、たとえば Google アナリティクス JavaScript のデフォルト レイアウトを呼び出すだけAnalytics::GoogleAnalytics.account_idです。

于 2008-09-21T05:20:24.817 に答える
0

ここで良い方法を見つけました

于 2008-09-21T02:56:39.763 に答える
0

環境変数を使用します。Herokuはこれを使用します。コードベースで設定を保持している場合、コードにアクセスできる人は誰でも、任意のシークレット設定(aws apiキー、ゲートウェイapiキーなど)にアクセスできることに注意してください。

daemontoolのenvdirは構成を設定するための優れたツールであり、Herokuがアプリケーションに環境変数を与えるために使用するものであると確信しています。

于 2011-07-19T20:46:12.840 に答える
0

Rails Settings Cachedを使用しました。

使い方は非常に簡単で、設定値をキャッシュに保持し、動的に変更することができます。

于 2012-10-22T22:36:25.037 に答える