2013-10-03 4 views
1

Я использую Active Gem/API для доставки, для которого вам необходимо иметь логин и пароль для подключения к различным почтовым службам, например. FedEx или Canada Post. В настоящее время я жестко закодирован как для каждой службы, так и для отдельного метода в контроллере. Я бы приветствовал предложения о том, как сделать это более надежно. СпасибоКак сохранить регистрационные данные для API в рубине на рельсах?

ответ

1

Вы можете сделать это в отдельном файле для всех своих паролей, а затем не проверять этот файл в каких-либо публичных репозиториях. Для этого вам необходимо изменить свой application.rb искать файл со всеми вашими паролями:

конфигурации/application.rb

... 
# Moving ENV variables into one place (config/application.yml) 
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__))) 
config.merge! config.fetch(Rails.env, {}) 
config.each do |key, value| 
    ENV[key] = value unless value.kind_of? Hash 
end 
... 
module Myapp 
    class Application < Rails::Application 
    ... 

конфигурации/application.yml (пример значения)

## Rails 
SECRET_TOKEN: 'asdfasfce336863e6asdfasdfasdf917ba42e6580fbbd42c01f19364a8f463ed377e46851360e3f282b0cdaf7b6332ed9e292c5e98e01acsasdf' 

## Amazon 
AWS_ACCESS_KEY_ID: 'ascdaewecaewewf' 
AWS_SECRET_KEY: 'asdfasdcae/asdfac' 
AWS_REDIRECT_URL: 'aws/success' 

## Environment-specific 
development: 
    MAILER_HOST: "localhost:3000" 
    REDISTOGO_URL: 'redis://@localhost:6379' 
    S3_BUCKET_NAME: "myapp-staging" 

test: 
    MAILER_HOST: "test.local" 
    REDISTOGO_URL: 'redis://@localhost:6379' 
    S3_BUCKET_NAME: "myapp-staging" 

production: 
    MAILER_HOST: "myapp.com" 
    S3_BUCKET_NAME: "myapp" 
    S3_BUCKET_ADDRESS: "https://myapp.s3.amazonaws.com/" 

Затем вы можете получить доступ к этой информации во всем приложении через переменные среды:

ENV['AWS_ACCESS_KEY_ID'] 

Где бы вы ни выбрали пароль.

Это позволяет легко менять что-либо все в одном месте, и это облегчает управление тем, какие разработчики получают конфиденциальную информацию.

EDIT

Существует также хороший Railscast на него, если у вас есть подписка: http://railscasts.com/episodes/85-yaml-configuration-revised

Смежные вопросы