1時間でツイッターサービスを作ろう! | KRAY Inc 試してみました。
github公開ソースを見てみると
twitter_auth.yaml oauth_consumer_key: <%= ENV['OAUTH_CONSUMER_KEY'] %> oauth_consumer_secret: <%= ENV['OAUTH_CONSUMER_SECRET'] %>
となっていました。
おお、これは使えそうだなと思って、
同じようにして、config/initializers 下に gitignore 対象の環境変数読み込みファイル
作ってやってみましたが、うまくいきません。
#config/initializers/env.rb ENV['OAUTH_CONSUMER_KEY'] = "hogehoge" ENV['OAUTH_CONSUMER_SECRET'] = "fugafua"
原因
どうも、yamlの呼出し方に問題があるようで
ソースコードと認識してくれていません。
あれ?fixtureとかdatabase.yamlって使えたよなと思って
railsのソースを見てみると
#rails-2.3.9/lib/initializer.rb def database_configuration require 'erb' YAML::load(ERB.new(IO.read(database_configuration_file)).result) end
という書き方で、ERBをかましていました。
なるほどね。
なので
同様の書き方にするとできました。
秘密にしておきたい設定などをgithubなどで公開する方法としていいかもしれません。
# config/environment.rb module TwitterAuth def self.config(environment=RAILS_ENV) @config ||= {} @config[environment] ||= YAML.load(ERB.new(File.read(RAILS_ROOT + '/config/twitter_auth.yml')).result)[environment] #@config[environment] ||= YAML.load(File.open(RAILS_ROOT + '/config/twitter_auth.yml').read)[environment] end end