Ruby on Rails-마이그레이션

Rails Migration을 사용하면 Ruby를 사용하여 데이터베이스 스키마에 대한 변경 사항을 정의 할 수 있으므로 버전 제어 시스템을 사용하여 실제 코드와 동기화 할 수 있습니다.

이것은 다음을 포함하여 많은 용도가 있습니다-

  • Teams of developers − 한 사람이 스키마를 변경하면 다른 개발자가 업데이트하고 "rake migrate"를 실행하기 만하면됩니다.

  • Production servers − 데이터베이스를 최신 상태로 유지하려면 새 릴리스를 롤아웃 할 때 "rake migrate"를 실행하십시오.

  • Multiple machines − 데스크톱과 랩톱 모두에서 또는 둘 이상의 위치에서 개발하는 경우 마이그레이션을 통해 모든 항목을 동기화 할 수 있습니다.

Rails 마이그레이션은 무엇을 할 수 있습니까?

  • create_table (이름, 옵션)
  • drop_table(name)
  • rename_table (이전 _ 이름, 새 _ 이름)
  • add_column (테이블 _ 이름, 열 _ 이름, 유형, 옵션)
  • rename_column (테이블 _ 이름, 열 _ 이름, 새 _ 열 _ 이름)
  • change_column (테이블 _ 이름, 열 _ 이름, 유형, 옵션)
  • remove_column (테이블 _ 이름, 열 _ 이름)
  • add_index (테이블 _ 이름, 열 _ 이름, 인덱스 _ 유형)
  • remove_index (테이블 _ 이름, 열 _ 이름)

Migrations support all the basic data types − 다음은 마이그레이션이 지원하는 데이터 유형 목록입니다 −

  • string − 제목과 같은 작은 데이터 유형의 경우.

  • text − 설명과 같은 긴 텍스트 데이터의 경우.

  • integer − 정수의 ​​경우.

  • float − 소수의 경우.

  • datetime and timestamp − 날짜와 시간을 열에 저장합니다.

  • date and time − 날짜 만 또는 시간 만 저장합니다.

  • binary − 이미지, 오디오 또는 영화와 같은 데이터 저장 용.

  • Boolean -참 또는 거짓 값 저장.

Valid column options are − 다음은 유효한 열 옵션 목록입니다.

  • limit (: limit =>“50”)

  • default (: default =>“blah”)

  • null(: null => false는 NOT NULL을 의미 합니다. )

NOTE − Rails Migration이 수행하는 활동은 프런트 엔드 GUI를 사용하거나 SQL 프롬프트에서 직접 수행 할 수 있지만 Rails Migration을 사용하면 이러한 모든 활동을 매우 쉽게 수행 할 수 있습니다.

이에 대한 자세한 내용은 Rails API 를 참조하십시오 .

마이그레이션 만들기

다음은 마이그레이션을 생성하는 일반적인 구문입니다.

application_dir> rails generate migration table_name

그러면 db / migrate / 001_table_name.rb 파일이 생성됩니다. 마이그레이션 파일에는 데이터베이스 테이블의 데이터 구조를 설명하는 기본 Ruby 구문이 포함되어 있습니다.

NOTE − 마이그레이션 생성기를 실행하기 전에 모델 생성자가 생성 한 기존 마이그레이션을 정리하는 것이 좋습니다.

3 개의 테이블에 해당하는 2 개의 마이그레이션을 생성합니다. books and subjects.

책 마이그레이션은 다음과 같아야합니다-

tp> cd library
library> rails generate migration books

위의 명령은 다음 코드를 생성합니다.

주제 마이그레이션은 다음과 같아야합니다-

tp> cd library
library> rails generate migration subjects

위의 명령은 다음 코드를 생성합니다.

마이그레이션을 만드는 동안 책과 주제에 소문자를 사용하고 복수형을 사용하고 있습니다. 이것은 마이그레이션을 생성 할 때마다 따라야하는 Rails 패러다임입니다.

코드 편집

애플리케이션의 db / migrate 하위 디렉토리로 이동하고 간단한 텍스트 편집기를 사용하여 각 파일을 하나씩 편집합니다.

다음과 같이 001_books.rb 수정-

ID 열은 자동으로 생성되므로 여기서도 수행하지 마십시오.

class Books < ActiveRecord::Migration
   
   def self.up
      create_table :books do |t|
         t.column :title, :string, :limit => 32, :null => false
         t.column :price, :float
         t.column :subject_id, :integer
         t.column :description, :text
         t.column :created_at, :timestamp
      end
   end

   def self.down
      drop_table :books
   end
end

방법 self.up 새 버전으로 마이그레이션 할 때 사용됩니다. self.down필요한 경우 변경 사항을 롤백하는 데 사용됩니다. 이때 위의 스크립트를 사용하여books 표.

다음과 같이 002_subjects.rb 수정-

class Subjects < ActiveRecord::Migration
   def self.up
      
      create_table :subjects do |t|
         t.column :name, :string
      end
	
      Subject.create :name => "Physics"
      Subject.create :name => "Mathematics"
      Subject.create :name => "Chemistry"
      Subject.create :name => "Psychology"
      Subject.create :name => "Geography"
   end

   def self.down
      drop_table :subjects
   end
end

위의 스크립트를 사용하여 subjects 주제 테이블에 5 개의 레코드를 생성합니다.

마이그레이션 실행

이제 필요한 모든 마이그레이션 파일을 만들었습니다. 데이터베이스에 대해 실행할 때입니다. 이렇게하려면 명령 프롬프트로 이동하여 응용 프로그램이있는 라이브러리 디렉터리로 이동 한 다음 다음을 입력합니다.rake migrate 다음과 같이-

library> rake db:migrate

데이터베이스의 현재 버전을 추적하는 "schema_info"테이블이 존재하지 않는 경우 생성됩니다. 각각의 새 마이그레이션은 새 버전이되고 데이터베이스가 현재 버전이 될 때까지 새 마이그레이션이 실행됩니다.

RakeRails가 활용하는 Unix make 프로그램과 유사한 Ruby 빌드 프로그램 으로 데이터베이스 구조 업데이트와 같은 복잡한 작업의 실행을 단순화합니다.

프로덕션 및 테스트 데이터베이스에 대한 마이그레이션 실행

마이그레이션에 사용할 Rails 환경을 지정하려면 RAILS_ENV 쉘 변수를 사용하십시오.

예를 들면-

library> export RAILS_ENV = production
library> rake db:migrate
library> export RAILS_ENV = test
library> rake db:migrate
library> export RAILS_ENV = development
library> rake db:migrate

NOTE− Windows에서는 내보내기 명령 대신 "set RAILS_ENV = production"을 사용하십시오 .

다음은 무엇입니까?

이제 데이터베이스와 필요한 테이블을 사용할 수 있습니다. 두 개의 후속 장에서는 컨트롤러 (ActionController)와보기 (ActionView)라는 두 가지 중요한 구성 요소를 살펴 보겠습니다.

  • 컨트롤러 만들기 (액션 컨트롤러).
  • 보기 작성 (활동보기).