[mysql] Rails database.yml을 관리하는 방법

여러 사람이 프로젝트에서 작업하고 데이터베이스 위치가 다른 경우 (특히 소켓) 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}


답변

svn : ignore 속성을 사용하여 해당 파일의 버전이 지정되지 않도록 할 수 있습니다.

여기에 지침이 있습니다.


답변

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'] %>

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


답변