여러 사람이 프로젝트에서 작업하고 데이터베이스 위치가 다른 경우 (특히 소켓) Rails database.yml을 처리하는 가장 좋은 방법은 무엇입니까?
답변
먼저 database.yml
템플릿 파일 로 이동 합니다.
Git을 사용하는 경우 :
git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"
또는 Subversion을 사용하는 경우 :
svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"
둘째, .yml 버전을 무시하십시오.
Git을 사용하는 경우 :
cat > .gitignore
config/database.yml
git add .gitignore
git commit -m "ignored database.yml"
Subversion을 사용하는 경우 :
svn propset svn:ignore config "database.yml"
셋째, database.yml은 어디에 있습니까? :
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
이 플러그인은 자체 로컬 버전을 만들지 않은 경우 Rake 작업이 실행되기 전에 개발자에게 경고합니다 config/database.yml
.
넷째, Capistrano 배포 작업을 설정합니다.
# 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
다섯째, 서버의 database.yml 버전을 업로드합니다.
scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
답변
Capistrano 3에서는 새 작업을 추가하는 대신 다음을 수행 할 수 있습니다.
set :linked_files, %w{config/database.yml}
답변
답변
Capistrano와 ERb를 사용하여 배포 중에 자격 증명을 묻는 또 다른 방법입니다.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
답변
위의 답변 외에도 “Where ‘your database.yml, dude?”와 유사한 레이크 작업을 작성했지만 구성 파일의 템플릿 예제를 유지할 수 있습니다. 확인 : https://github.com/Velid/exemplify
별도의 프로덕션 구성을 작성하고 Capistrano를 통해 연결하는 대신 자격 증명에 환경 변수를 사용하는 것이 좋습니다.
password: <%= ENV['PROD_DATABASE_PASSWORD'] %>