Ruby on Rails 2.1-마이그레이션

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

그것은 다음과 같은 많은 용도를 가지고 있습니다-

  • 개발자 팀-한 사람이 스키마를 변경하면 다른 개발자가 업데이트하고 "rake migrate"를 실행하면됩니다.

  • 프로덕션 서버-데이터베이스를 최신 상태로 유지하기 위해 새 릴리스를 롤아웃 할 때 "rake migrate"를 실행하십시오.

  • 여러 컴퓨터-데스크톱과 랩톱 모두에서 또는 둘 이상의 위치에서 개발하는 경우 마이그레이션을 통해 모든 컴퓨터를 동기화 할 수 있습니다.

Rails Migration은 무엇을 할 수 있습니까?

  • 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 − 설명과 같은 긴 텍스트 데이터를위한 것입니다.

  • text − 설명과 같은 긴 텍스트 데이터를위한 것입니다.

  • integer − 정수입니다.

  • float − 소수점입니다.

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

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

  • binary − 이미지, 오디오 또는 영화와 같은 데이터를 저장하기위한 것입니다.

  • boolean − 참 또는 거짓 값을 저장합니다.

유효한 열 옵션은 다음과 같습니다.

  • limit (: limit =>“50”)

  • default (: default =>“blah”)

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

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

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

마이그레이션 만들기

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

C:\ruby\application> ruby script/generate migration table_name

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

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

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

C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects

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

수행 할 작업을 알리도록 코드 편집

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

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

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

class Books < ActiveRecord::Migration
   def self.up
      create_table :books do |t|
         t.string     :title, :limit => 32, :null => false
         t.float      :price
         t.integer    :subject_id
         t.text       :description
         t.timestamp  :created_at
      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.string :name
      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표; subjects 테이블에 5 개의 레코드를 만듭니다.

마이그레이션 실행

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

C:\ruby\library> rake db:migrate

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

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

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

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

예를 들면-

C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=development
C:\ruby\library> rake db:migrate

NOTE− Unix에서는 set 명령 대신 "export RAILS_ENV = production"을 사용하십시오 .

다음은 무엇입니까?

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

  • 컨트롤러 만들기 (액션 컨트롤러)
  • 보기 만들기 (작업보기)