0

アプリケーションのさまざまな部分で使用する定数を宣言するために、initializersディレクトリの1つのファイルを使用しています。

FIRST_STR = "First Name"
LAST_STR = "Last Name"
new_user_hash = Hash.new
new_user_hash[ "first" ] = FIRST_STR
new_user_hash[ "last" ] =  LAST_STR

アプリケーションのさまざまな部分で問題なく使用できますが、を使用しようとするとFIRST_STR、次のエラーメッセージが表示されます。LAST_STRnew_user_hash

#<#:0x007f8da5752da0>の未定義のローカル変数またはメソッド `new_user_hash'

あるファイルでハッシュを定義/宣言して、別のファイルで使用することはできませんか?

4

2 に答える 2

7

<code>new_user_hash はローカルであり、アプリケーションの残りの部分では使用できない可能性があります。グローバルにすると(それを呼び出して$new_user_hash)利用可能になります。FIRST_STRとの場合LAST_STR、それらは事実上グローバルである定数です。

コードを次のいずれかに更新します。

$new_user_hash = { "first" => FIRST_STR, "last" => LAST_STR }

また

NEW_USER_HASH  = { "first" => FIRST_STR, "last" => LAST_STR }

また、アプリケーションの他の部分にアクセスしたり、そこからアクセスし$new_user_hashたりできます。NEW_USER_HASH

もう 1 つの戦略は、モジュールを定義することです。

module MyAppConfig
  NEW_USER_HASH = { "first" => FIRST_STR, "last" => LAST_STR } 
end

次に、モジュール名をプレフィックスとして付けることで、他の場所にアクセスできます。

MyAppConfig::NEW_USER_HASH["first"]

これは、より多くのグローバル変数を作成しないため、より受け入れられるアプローチです。

于 2012-05-12T16:51:14.560 に答える
0

構成管理ジェムを使用する必要があります: https://www.ruby-toolbox.com/categories/Configuration_Management

于 2012-05-12T21:38:22.993 に答える