일반적인 레일 DB 사용자는 마이 그 레이션을 실행하기 위해 완전한 소유권을 가지고 있습니다.레일 4 : 별도의 DB 사용자로 마이그레이션 실행
그러나 공유 DB를 개발 용으로 사용하므로 개발 DB에 대해 "파괴적인"DB 작업 (예 : rake db:drop/reset/etc...
)을 실행할 수 없습니다.
내 생각은이 DB 사용자를 작성하는 것입니다 :
- 레일 서비스
- 레일 - Migrator를을
서비스 사용자가 DB에 연결 "정상적인"웹 응용 프로그램의 사용자입니다 앱이 실행될 때 이 DB 사용자는 표준 CRUD 권한 만 가질 수 있지만 삭제 권한은 없습니다.
migrator 사용자는 마이그레이션 실행에만 사용되는 "admin"사용자입니다. 이 DB 사용자는 DB에 대한 일반적인 "전체"액세스 권한을 가지므로 해당 명령이 실행되면 DB를 "삭제"할 수 있습니다.
질문 : 레일스 마이그레이션을 rails-migrator
사용자로 실행하도록 알리는 확실한 방법이 있습니까? 나는 어떻게 든 나쁜 생각처럼 보이는 모든 레일 마이그레이션 파일에 대한 연결 문자열을 어떻게해서든지 변경함으로써 이것을 어떻게 수행 할 것인지 확신 할 수 없다.
위의 설명과 같이 파괴적인 레이크 작업을 "삭제"하여 개발자가 실행할 수 없도록 할 것입니다.
# lib/tasks/db.rake
# See: https://coderwall.com/p/jt4e1q/disable-destructive-rake-tasks-by-environment
tasks = Rake.application.instance_variable_get '@tasks'
tasks.delete 'db:reset'
tasks.delete 'db:drop'
namespace :db do
desc 'db:reset not available in this environment'
task :reset do
puts 'db:reset has been disabled'
end
desc 'db:drop not available in this environment'
task :drop do
puts 'db:drop has been disabled'
end
end