私は前の質問で提供された解決策に従ってきました:
Controller(Rails 3)のapplication.rbからconfigにアクセスする
ただし、最初にFacebookの設定に適用します。
私は最初にFacebookの設定ファイルを作成しました:
#lib/facebook_config.rb
module FacebookConfig
def self.config
@@config ||= {}
end
def self.config=(hash)
@@config = hash
end
終わり
YAMLファイルを定義してから初期化しました。
#config/facebook.yml
development:
app_id = "id"
app_secret = "secret"
test:
app_id = "id"
app_secret = "secret"
production:
app_id = "id"
app_secret = "secret"
と
#config/intializers/01.facebook_config.rb
require './lib/facebook_config'
FacebookConfig.config = YAML.load_file("config/facebook.yml")[Rails.env]
omniauth構成を次のように定義します。
#config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
# The following is for facebook
provider :facebook, FacebookConfig.config[:app_id], FacebookConfig.config[:app_secret], {:scope => 'email, read_stream, read_friendlists, friends_likes, friends_status, offline_access'}
end
ただし、開発モードでテストしているときに、webrickサーバーを起動すると次のエラーが発生します。
config / initializers / omniauth.rb:3:in `[]':シンボルを整数に変換できません(TypeError)
設定ファイルにアクセスするとき、それはシンボルではなく文字列であるべきだと思いましたか?
ヒントをありがとう。