Я не храню database.yml в git.Я пишу это в задаче настройки шапки.Что касается адресов электронной почты и прочего, я читаю их при инициализации приложения из файла в файловой системе.Опять же, не под управлением исходного кода и записывается в общий каталог во время установки cap.
Вот пример:
namespace :deploy do
task :start do ; end
task :stop do ; end
task :setup do
run <<-CMD
mkdir -p -m 775 #{release_path} #{shared_path}/system #{shared_path}/media &&
mkdir -p -m 777 #{shared_path}/log &&
mkdir -p -m 777 #{shared_path}/pids &&
mkdir -p #{deploy_to}/#{shared_dir}/config
CMD
end
require 'erb'
after deploy:setup do
db_config = ERB.new <<-EOF
production:
adapter: mysql2
database: my_fine_database
host: 127.0.0.1
username: database_user
password: database_password
EOF
email_config = ERB.new <<-EOF
---
:user_name: me@mydomain.com
:password: verysecret
:port: 25
:address: mydomain.com
:domain: mydomain.com
:authentication: :login
EOF
put db_config.result, "#{shared_path}/config/database.yml"
put email_config.result, "#{shared_path}/config/creds.yml"
end
и в моем environment.rb
я положил:
credentials = File.join(Rails.root, 'config/creds.yml')
ActionMailer::Base.smtp_settings = YAML.load(File.open(credentials)) if File.exists?(credentials)
Какую другую конфиденциальную информацию вы можете хранить?