[Rails] rails migration 대신 ridgepole 사용

공식 문서


https://github.com/winebarrel/ridgepole

도입 이유


현직 현장에 도입할 기회가 있고 개인 개발에도 활용을 시도한 것이 계기가 됐다.
migration이 자주 고장나 수정되기 때문에 열려고 하는 것도 이유 중 하나다.

이점 활용


  • DB를 변경할 때마다 이전 파일을 만들 필요가 없습니다. (표의 수량과 schema 파일의 수량은 같습니다.)

  • rails migration 처럼 실패하지 않습니다. (환경 때문에 파일 버전이 일치하지 않습니다.)
  • 가져오기 방법


    Gemfile에 다음 코드 추가
    gem 'ridgepole'
    

    파일 관리 방법


    schema를 관리하는 디렉터리를 만들고 표마다 schema 파일을 만듭니다.
    (Schemafile을 만들어 그 안에 모든 표 정보를 쓰는 방법도 있기 때문에 좋아하는 것 같아요.)
    例) ファイル名: articles.schema
    中身: 
    create_table "articles", force: :cascade do |t|
     t.string   "title"
     t.text     "text"
     t.datetime "created_at"
     t.datetime "updated_at"
    end
    ※ 公式ドキュメントを参照
    
    파일을 표로 분할할 때는 Schemafile로 각 파일Dir.glob 등을 미리 디렉터리를 읽어야 한다.DB에 적용할 때 Schemafile을 통해 각 테이블의 정보를 참조합니다.

    DB 적응 방법


    공식에서는 config.yml로부터 DB의 정보를 얻은 것 같지만 rails에서는 DB의 정보가 config/database.yml에 기재되어 있기 때문에 지정config/database.yml했다.
    다음 명령을 실행하여 DB에 테이블을 만듭니다.또한 표 정보를 수정할 때 각 표의 schema 파일에서 열을 삭제하고 데이터 형식을 변경하며 저장하고 다음 명령을 다시 실행하면 된다.명령을 실행할 때 어떤 열, 테이블이 삭제되고 변경되는지 정보를 출력하기 때문에 안심하고 사용할 수 있습니다.
    bundle exec ridgepole --file Schemafile -c config/database.yml -E development --apply
    

    좋은 웹페이지 즐겨찾기