Rails 2.3.8アプリケーションを使用して、environment.rbにグローバル変数を配置していました。
MAX_ALLOWD_ITEMS = 6
Rails 3.で動作しないようです。application.rbに入れてみましたが、役に立ちませんでした。
何を指示してるんですか?
Ryanの提案に従ってサーバーの再起動をすでに試みている場合は、application.rb
このような:
module MyAppName
class Application < Rails::Application
YOUR_GLOBAL_VAR = "test"
end
end
次に、コントローラー、ビュー、またはどこにでも名前空間を付けて呼び出すことができます。
MyAppName::Application::YOUR_GLOBAL_VAR
別の代替手段は、 settingslogic のようなものを使用することです。 settingslogicでは、yml構成ファイルと、構成ファイルを指すモデル(Settings.rb)を作成するだけです。次に、Railsアプリでどこからでもこれらの設定にアクセスできます:
Settings.my_setting
私は通常、application_helper.rbを使用します。これは次のようになります。
module ApplicationHelper
def my_global_variable
my_global_variable = "Helloworld!"
end
end
次に、my_global_variableを関数としてどこにでも置くことができます。
あなたが言うようにconfig/environment.rbで本当にそれを定義している場合、私が問題を複製できる唯一の方法は、Rails server
を使用してサーバーを実行することです- then変数をconfig/environment.rbに入れ、ビューまたはコントローラでどこかで参照してから、アプリケーションの特定の部分をロードしようとします。
サーバーを停止して再起動すると、そのビューまたはコントローラーにアクセスしようとしても機能します。サーバーを再起動していないと思います。
通常、config/initializers/yaml(yml)ファイル内にすべてのグローバルサイト設定を作成します。何かを変更するたびにサーバーを再起動することを忘れないでください。
変数をenvironment.rbに追加するソリューションが実際にRails3で機能するかどうかはわかりません。具体的には、次のようにモジュール定義内で変数を定義していない場合です。
module MyConfig
Max_ints = 5
end
max_intsを単純な定義として含めるだけでは、Max_intsを使用することはできません。または、少なくとも私がこれを試してみたときに私が見つけたのはそれです。また、initializers /フォルダーを使用するという提案は、使いやすさの点でおそらくより良い解決策だと思います。参照 Railsの永続変数