Cách tốt nhất để xử lý Rails database.yml là gì nếu nhiều người đang làm việc trên dự án và các vị trí cơ sở dữ liệu khác nhau (đặc biệt là socket).
Cách tốt nhất để xử lý Rails database.yml là gì nếu nhiều người đang làm việc trên dự án và các vị trí cơ sở dữ liệu khác nhau (đặc biệt là socket).
Câu trả lời:
database.yml
sang tệp mẫu.Nếu bạn đang sử dụng Git:
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
Hoặc, nếu bạn đang ở trên Subversion:
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
Nếu bạn đang sử dụng Git:
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Nếu bạn đang ở trên Subversion:
svn propset svn:ignore config "database.yml"
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Plugin đó cảnh báo các nhà phát triển trước khi chạy bất kỳ tác vụ Rake nào nếu họ chưa tạo phiên bản cục bộ của riêng mình config/database.yml
.
# in RAILS_ROOT/config/deploy.rb:
after 'deploy:update_code', 'deploy:symlink_db'
namespace :deploy do
desc "Symlinks the database.yml"
task :symlink_db, :roles => :app do
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end
end
scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
cat >> .gitignore
thay thế. Vì bạn sẽ thổi bay tập tin hiện tại của bạn bằng cách khác ...
Trong Capistrano 3, thay vì thêm nhiệm vụ mới, bạn chỉ có thể làm:
set :linked_files, %w{config/database.yml}
Bạn có thể sử dụng thuộc tính svn: ignore để ngăn tệp đó được tạo phiên bản.
Tuy nhiên, một phương pháp khác sử dụng capistrano một ERb để nhắc thông tin đăng nhập trong quá trình triển khai.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
Ngoài các câu trả lời trên, tôi đã viết một tác vụ rake tương tự như "Where's your database.yml, dude?", Nhưng cho phép giữ lại các ví dụ mẫu của bất kỳ tệp cấu hình nào. Hãy khám phá: https://github.com/Velid/exemplify
Để thay thế cho việc viết các cấu hình sản xuất riêng biệt và liên kết chúng qua Capistrano, tôi cũng khuyên bạn nên sử dụng các biến môi trường cho thông tin đăng nhập của bạn:
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
Có rất nhiều công cụ và cách thức tiện dụng để thực hiện việc này.