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)라는 두 가지 중요한 구성 요소를 살펴 보겠습니다.
- 컨트롤러 만들기 (액션 컨트롤러).
- 보기 작성 (활동보기).