QA@IT

Railsで設定値を取得するには?

3880 PV

Railsはアプリの起動時にconfig/environments以下を読み込みますが、

コード中で上記のような設定値(初期化した値)を取得するにはどのように記述すればよいですか?
(もしくはコンソール上で)
carriewaveというgemで以下のように設定したconfig.strageの値を取得したいのです。

CarrierWave.configure do |config|
  config.fog_credentials = {
      ......
  }

  config.storage :fog
  config.fog_directory = 'awss3'

end

ご教授をお願い致します。

回答

< メソッド見てみましたが、取得できるようなものがありませんでした。READMEも見た限り見つからずです。

うーん、であればスマートではない気がするのですが、グローバル変数を使う方法しかわかりませんね。具体的に以下の様なコードになります。

FOG_DIRECTORY = "hello"

CarrierWave.configure do |config|
  config.fog_credentials = {
      ......
  }

  config.storage :fog
  config.fog_directory = FOG_DIRECTORY

end

ただ、生でグローバル変数を使うのはあまり良くないと思いますので、settingslogic等のGemを使うといいかもしれません。

編集 履歴 (0)
  • figaroという環境変数管理gemを使ってるのでそれを使用して設定してみます。ありがとうございました! -

解答というよりは補足です。

少し勘違いされているかとおもうのですが、
 config以下に書いたコードは、一度だけ実行されるという事が保証されてるだけです。
逆に言えばconfigに書いたので、なにか挙動が変わるということはないです。

なので、ここで問題なのはCarrierWaveというGemの、CarrierWaveクラスのstorageという値をどうやって取得するか?、というのが問題になると思います。が、渡しはこのGemを使った事が無いのでわかりません。

ただ、この手の問題はGithubのReadMeを読むと書いてある事が多いです。

また書いてない場合は、

CarrierWave.methods

というコードを実行すると、CarrierWaveというクラスに対して呼び出せるメソッドの一覧が見れます。
ざっと眺めて、怪しそうなメソッド名(今回でいえばconfigとかstorageとか)があれば、実行してみると、とれたりします。

編集 履歴 (1)
  • ありがとうございます。メソッド見てみましたが、取得できるようなものがありませんでした。READMEも見た限り見つからずです。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。