5

Tôi đang sử dụng omniauth, với ý tưởng, cho phép đăng nhập qua Facebook trong ứng dụng của tôi.phát minh với omniauth - thiết lập cấu hình riêng biệt cho dev và sản xuất

tập tin devise.rb của tôi có dòng sau

config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 

tôi có 2 ứng dụng trên facebook, một trỏ đến url sống của tôi & khác để url dev của tôi.

Làm cách nào để thêm hai cấu hình omniauth riêng biệt vào tệp rb được phát hành?

cái gì đó như -

if ENV['RAILS_ENV'] = "production" 
    config.omniauth :facebook, 'MY_LIVE_APP_ID', 'MY_LIVE_APP_SECRET' 
else 
    config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 
end 

Quan trọng hơn, nên tôi được đặt này trong file devise.tb hoặc nó nên được tách ra thành production.rb tôi & file devleopment.rb? Nếu vậy, làm thế nào để tôi tham khảo nó trong tập tin devise.rb của tôi?

Trả lời

11

Phương pháp của tôi cho việc này là lưu trữ chúng trong tệp yaml. Tôi gọi tôi config/api_keys.yml

defaults: &defaults 
    twitter: 
    api_key: "KEY" 
    api_secret: "SECRET" 
    facebook: 
    api_key: "KEY" 
    api_secret: "SECRET" 

development: 
    <<: *defaults 

test: 
    <<: *defaults 

production: 
    twitter: 
    api_key: "KEY2" 
    api_secret: "SECRET2" 
    facebook: 
    api_key: "KEY2" 
    api_secret: "SECRET2" 

Sau đó, trong tập tin devise.rb của tôi, tôi làm:

API_KEYS = YAML::load_file("#{Rails.root}/config/api_keys.yml")[Rails.env] 
config.omniauth :facebook , API_KEYS['facebook']['api_key'], API_KEYS['facebook']['api_secret'] 
config.omniauth :twitter , API_KEYS['twitter']['api_key'], API_KEYS['twitter']['api_secret'] 

Như một thói quen tốt, có lẽ bạn không nên lưu trữ các khóa sản API của bạn trong tập tin này trong kiểm soát phiên bản. Bạn nên lưu trữ nó trên máy chủ và liên kết nó trong kịch bản triển khai của bạn, như bạn sẽ database.yml

+1

cảm ơn vì đã trợ giúp. Sợ tôi không chắc chắn những gì bạn có nghĩa là với symlinking, tôi lưu trữ ứng dụng của tôi trên heroku vì vậy tôi không có một kịch bản triển khai thta tôi nhận thức được. – Finnnn

Các vấn đề liên quan