Я вставляю ключи API и тому подобное в конфигурационный yaml, например,
development:
twitter_api_key: stringstringstring
chunky: bacon
production:
twitter_api_key: gnirtsgnirtsgnirts
foo: bar
, а затем использую встроенный набор Sinatra для обработки данных.
configure do
yaml = YAML.load_file(settings.config + "/config.yaml")[settings.environment.to_s]
yaml.each_pair do |key, value|
set(key.to_sym, value)
end
end
И я могу получить к ним доступ из объекта settings .Я не уверен, почему вы не передадите файл конфигурации, хотя.,,Здесь нет серьезной угрозы безопасности, так как только те пути, которые вы явно определили, могут быть доступны через Интернет.Я думаю, пароль администратора может храниться таким же образом, если вы не хотите помещать его в базу данных, но я бы хотя бы зашифровал его с помощью salt .
Простостарайтесь не наступать на настройки конфигурации Sinatra при определении своих собственных.
РЕДАКТИРОВАТЬ:
Я думаю, я только что понял, почему вы предпочитаете не фиксировать файл конфигурации.Если вы работаете над проектом с открытым исходным кодом, вы, конечно, не захотите зафиксировать файл конфигурации в своем репо с открытым исходным кодом, но вам нужно будет зафиксировать файл в Heroku, чтобы он работал.Если это так, я бы либо:
- Использовал два отдельных локальных репо: одно для проекта с открытым исходным кодом, а другое для проекта heroku.Просто установите проект с открытым исходным кодом в качестве вышестоящего репозитория в проекте Heroku, и вы сможете получать изменения.
- Поместите как ключи API, так и зашифрованный / соленый пароль в базу данных; MongoHQ предлагает пользователям Heroku бесплатный уровень в качестве дополнения для простого хранения nosql, используя MongoDB .