Rails database.yml을 관리하는 방법


82

여러 사람이 프로젝트에서 작업하고 데이터베이스 위치가 다른 경우 (특히 소켓) Rails database.yml을 처리하는 가장 좋은 방법은 무엇입니까?


2
설명 : svn에서 확인하는 Capistrano와 함께 작동하므로 작업을 무시하지 않는다고 생각합니다.
phillee

1
Capistrano 케이스에 두 단계를 더 추가했습니다.
James A. Rosen

답변:


160

먼저 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

8
가장 도움이되는 답변을 "수락"하는 것이 일반적입니다 (필수는 아니지만). 첫 번째 수락에 대한 배지도받을 수 있다고 생각합니다.
James A. Rosen

3
내 나쁜-투표했지만 수표를 보지 못했습니다. 완료하고 감사합니다!
phillee

'deploy : update_code', 'deploy : symlink_db'를 'deploy : assets : precompile', 'deploy : symlink_db'이전으로 변경해야했는데 제대로 작동했습니다.
joshua.paling 2013-08-12

다섯 번째 단계를 제외하고 모든 것이 작동합니다. 그러한 디렉토리가 없다고 말하지만 거기에 있습니다.
Sebastialonso

중요한 점은 cat >> .gitignore대신 사용 하는 것이 좋습니다 . 당신이 그렇지 않으면 기존 파일을 날려 것이기 때문에 ...
sijpkes

16

Capistrano 3에서는 새 작업을 추가하는 대신 다음을 수행 할 수 있습니다.

set :linked_files, %w{config/database.yml}



0

위의 답변 외에도 "Where 'your database.yml, dude?"와 유사한 레이크 작업을 작성했지만 구성 파일의 템플릿 예제를 유지할 수 있습니다. 확인 : https://github.com/Velid/exemplify

별도의 프로덕션 구성을 작성하고 Capistrano를 통해 연결하는 대신 자격 증명에 환경 변수를 사용하는 것이 좋습니다.

password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

이 작업을 수행 할 수 있는 유용한 도구방법 이 많이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.