2011-10-14 11 views
1

私はRails v 2.0.2アプリケーションを持っています。 initializers/constants.rbで定数を初期化し、その値をDBから設定したいとします。このようなRailsのDBの値で定数を初期化する

なめらか:

SESSION_DURATION = SystemDB::Configuration.get('session_duration', 0).to_i.minutes 

は、だから私は名前は= 'session_duration' 行とPostgreSQLでは設定テーブルを持っています。 このコードは、私の地元のWindows PC上で正常に動作しますが、それは誤りでLinuxを運用サーバーに障害が発生した:`retrieve_connection 'のActiveRecord :: ConnectionNotEstablished(ActiveRecordを:: ConnectionNotEstablished)

それは時間レールのように私には思えますConstants.rbファイルを初期化します。ActiveRecordはまだ初期化されていません。私はそれで何ができますか?

By The Way。私はこの定数をモジュールで使用しています - できるだけ早く初期化する必要があります。 (私がうまく理解している場合)

答えて

1

これはおそらくそれを行う最良の方法ではありません..データベースのフィールドから定数を設定する場合は、私はそれが実際に変数ではなく、定数。値が変更された場合、Webサーバーを再起動するまでアプリケーションは実際に変更を取得しません。アプリケーションでSESSION_DURATIONへの参照を使用する代わりに、データベース呼び出しを行うほうがよいでしょう。データベース呼び出しは安価です。あなたはあなたのアプローチを再考したいかもしれません。

あなたのアプリケーションは私よりも優れていると知っていますし、これを行う必要があるかもしれません。もしそうなら、これはちょっと面倒ですが、定数ファイルには常にactiverecordが必要です。私は定数を使用すると、この方法は、DBの良くない設定が、決して、感謝を複製します必要

+0

);手動ですべてのベスト

require "rubygems" require "activerecord" ActiveRecord::Base.establish_connection ( :adapter => "mysql", :host => "localhost", :username => "user", :password => "password", :database => "some_database") 

...最初にデータベースに接続します。 –

+0

他のファイルにCONSTANTSを置くことはできますか?しかし、モジュール(/ lib /ディレクトリ)にアクセスするには定数が必要です –

関連する問題