

**実行環境**

[code]

    $ ruby -v
    ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
    
    $ rails -v
    Rails 4.2.6
    
[/code]

環境変数を定義する Gem として有名な [config](https://github.com/railsconfig/config) を使用しています

`bundle install` で config をインストールして

[code]

    $ rails g config:install
      create  config/initializers/rails_config.rb
      create  config/settings.yml
      create  config/settings.local.yml
      create  config/settings
      create  config/settings/development.yml
      create  config/settings/production.yml
      create  config/settings/test.yml
      append  .gitignore
    
[/code]

を実行し環境変数を書いておく yml ファイルを作成しました  
しかし

[code]

    $ vi config/settings.yml
    twitter:
      follow_target_name: 'mossmoss'
      text: 'mossmossmossmossmoss'
      url : 'http://mossmossmossmossmoss.com/'
    
[/code]

として環境変数を取得しようとすると `nil` となっていまいます

[code]

    $ rails c
    > Settings.twitter
    => nil
    > Settings
    => #<Config::Options> 
    
[/code]

ドキュメント通りにやったのですがなぜ どこかで環境変数の取得方法が間違っているのでしょうか？


CC BY-SA 3.0
2016-03-19T23:00:19.933
23286
2016-11-02T17:15:10.667
2016-03-19T23:06:05.803
5505
5505
question
ruby-on-rails
rails_config の環境変数が反映されない


直接の質問の回答ではないのですが、[dotenv](https://github.com/bkeepers/dotenv)というgemもありまして、私はいつもそれを使っているのですが、環境変数をrails内に設定するということであればそちらを使ってもできると思います。  
`.env`という名前のファイルを使って、シェル変数のように環境変数にしたい情報を設定するだけです。

[code]

    S3_BUCKET=YOURS3BUCKET
    SECRET_KEY=YOURSECRETKEYGOESHERE
    
[/code]

この設定が済むと、railsプロジェクトのどこでも（多分）以下のように記述して環境変数を取ってこれるようになると思います。

[code]

      s3 = ENV['S3_BUCKET']
    
[/code]

configをお使いとのことですので、そちらを使うのでも一向に問題ないと思いますが、もしどうしても行き詰まってしまうようなら(そういうことはないでしょうが)、こちらを試してみるのも悪くないと思います。


CC BY-SA 3.0
2016-03-20T22:17:13.623
23309
2016-03-20T22:17:13.623
9403
23286
answer


spring使ってませんか? (Rails4以降ならデフォルトで使用します)  
config/initializers/以下にファイルを追加・変更したあとはbundle exec spring stop しましょう。

[code]

    % bundle exec spring status
    Spring is running:
    
    71694 spring server | myapp | started 8 secs ago
    71697 spring app    | myapp | started 8 secs ago | development mode
    % vi Gemfile
    % bundle
    % vi config/settings.yml
    % bin/rails c
    Running via Spring preloader in process 72273
    Loading development environment (Rails 4.2.6)
    >> Settings
    => #<Config::Options>
    >> Settings.twitter
    => nil
    >> ^D
    % bundle exec spring stop
    Spring stopped.
    % bin/rails c
    Running via Spring preloader in process 72436
    Loading development environment (Rails 4.2.6)
    >> Settings.twitter
    => #<Config::Options follow_target_name="mossmoss">
    
[/code]


CC BY-SA 3.0
2016-11-02T07:00:55.383
30050
2016-11-02T17:15:10.667
2016-11-02T17:15:10.667
17037
17037
23286
answer