2012-02-22 9 views
0

Rails 3.2.1とRuby 1.9.3を使用して、グローバル定数オブジェクトを初期化する適切な場所は、レールサーバーの起動時に一度しか初期化されません。Ruby on Railsサーバー上の定数グローバルオブジェクト

今私のように、インスタンスオブジェクトとして宣言していますし、それはメソッドが呼び出されるたびに初期化されます。

@object_wanted_to_be_global_const = Gemname::GemnameClass.new 'input' 

グローバル定数変数としてこれを宣言するのに最適な場所ですか?

インスタンスではなくグローバルとして宣言されている場合、ほとんどのリクエストで変数がアクセスされるため、パフォーマンスにどのような影響がありますか?

+0

私はおそらく 'application_controlller.rb'で宣言していると思っていますが、依然としてリクエストごとに再初期化されませんか? – rudolph9

答えて

4

これをイニシャライザに入れます。

そして、Rubyの規約を尊重するには、名前全体を大文字にします。

この方法に関するパフォーマンスの問題はありません。

+0

'config/initializers/gem_name.rb'で' $ GLOBAL_OBJECT = ... 'として初期化しますか?同様に、これがパフォーマンスにどのように影響するかを説明しますか? – rudolph9

+0

あなたは '$'は必要ありません。パフォーマンスには影響しません。メモリにロードされます(すべてのi18nの値と同様) – apneadiving

+0

'ALL_CAPS_VARIABLE' - >グローバル変数と定数変数?これはRubyの言語の一部か、レールによって採用されている規約ですか? – rudolph9

関連する問題