[RUBY-ON-RAILS] 하나의 마이그레이션 파일을 실행
RUBY-ON-RAILS하나의 마이그레이션 파일을 실행
하나의 마이그레이션을 실행하는 쉬운 방법이 있나요? 난 그냥 특정 하나를 실행하려는 특정 버전으로 마이그레이션하고 싶지 않아요.
해결법
-
==============================
1.당신은 루비 파일에서 직접 코드를 실행할 수 있습니다 :
당신은 루비 파일에서 직접 코드를 실행할 수 있습니다 :
rails console >> require "db/migrate/20090408054532_add_foos.rb" >> AddFoos.up
주 : 레일의 최신 버전은 AddFoos.new.up보다는 AddFoos.up가 필요할 수 있습니다.
반환 클래스 이름의 배열을 필요로하는 사실에 의존한다 (IRB없이) 다른 방법 :
script/runner 'require("db/migrate/20090408054532_add_foos.rb").first.constantize.up'
참고이 작업을 수행 할 경우, 그것은 아마도 schema_migrations 테이블을 업데이트하지 않습니다,하지만 당신이 어쨌든 원하는 것처럼 그것은 보인다.
-
==============================
2.당신은 항상 실행할 수있는 레일의 비교적 최신 버전의 가정 :
당신은 항상 실행할 수있는 레일의 비교적 최신 버전의 가정 :
rake db:migrate:up VERSION=20090408054532
어디 버전은 이전의 파일 이름에 타임 스탬프입니다.
편집 : 지난 팔년 동안 어떤 시점에서 이미 실행 된 경우 실행이되지 않도록 추가 검사를 레일 (나는 확실히 어떤 버전이 아니에요). 이것은 schema_migrations 테이블의 항목으로 표시됩니다. 하는 것이, 단순히 갈퀴 DB를 실행 다시 실행 마이그레이션 : 리두 VERSION = 20090408054532 대신합니다.
-
==============================
3.특정 마이그레이션을 실행하려면 수행
특정 마이그레이션을 실행하려면 수행
$ rake db:migrate:up VERSION=20080906120000
당신이 마이그레이션을 여러 번 실행하려는 경우 수행
# use the STEP parameter if you need to go more than one version back $ rake db:migrate:redo STEP=3
단일 마이그레이션을 여러 번 실행하려는 경우 수행
# this is super useful $ rake db:migrate:redo VERSION=20080906120000
(당신은 당신의 이전의 파일 이름에 버전 번호를 찾을 수 있습니다)
편집 : 당신은 또한 간단하게 마이그레이션 파일, 예 이름을 바꿀 수 있습니다 :
20151013131830_my_migration.rb -> 20151013131831_my_migration.rb
그런 다음 마이그레이션 일반적으로이 과정이 새로운 하나 마이그레이션을 처리합니다 당신은) 준비로 (원격 환경에 마이그레이션 할 경우 (유용하는 당신은 더 적은 제어 할 수 있습니다.
편집 2 : 또한 단지 데이터베이스 마이그레이션 항목을 핵무기 수 있습니다. 예 :
rails_c> q = "delete from schema_migrations where version = '20151013131830'" rails_c> ActiveRecord::Base.connection.execute(q)
레이크 dB : 마이그레이션은 다음 핵 공격 마이그레이션의 접속 방법을 다시 실행합니다.
-
==============================
4.이 같은 변화의 방법을 구현 한 경우 :
이 같은 변화의 방법을 구현 한 경우 :
class AddPartNumberToProducts < ActiveRecord::Migration def change add_column :products, :part_number, :string end end
이 같은 인스턴스 (:까지) 또는 마이그레이션 (아래) 당신은 이동 및 실행 마이그레이션의 인스턴스를 생성 할 수 있습니다 :
$ rails console >> require "db/migrate/20090408054532_add_part_number_to_products.rb" >> AddPartNumberToProducts.new.migrate(:down)
-
==============================
5.이것은 다시 "20150927161307_create_users.rb을"이 마이그레이션 파일을 실행하는 단계입니다
이것은 다시 "20150927161307_create_users.rb을"이 마이그레이션 파일을 실행하는 단계입니다
-
==============================
6.당신이 경로에 문제가있는 경우에 당신은 사용할 수 있습니다
당신이 경로에 문제가있는 경우에 당신은 사용할 수 있습니다
require Rails.root + 'db/migrate/20090408054532_add_foos.rb'
-
==============================
7.레일 5로서 당신은 대신 레이크의 레일을 사용할 수 있습니다
레일 5로서 당신은 대신 레이크의 레일을 사용할 수 있습니다
3 레일 - 4
# < rails-5.0 rake db:migrate:up VERSION=20160920130051
5 레일
# >= rails-5.0 rake db:migrate:up VERSION=20160920130051 # or rails db:migrate:up VERSION=20160920130051
-
==============================
8.대신 스크립트 / 러너, 당신이 사용 할 수 있습니다 통지는 새로운 레일 환경에 주자 레일하십시오.
대신 스크립트 / 러너, 당신이 사용 할 수 있습니다 통지는 새로운 레일 환경에 주자 레일하십시오.
-
==============================
9.방법 1 :
방법 1 :
rake db:migrate:up VERSION=20080906120000
방법 2 :
레일 콘솔 1. 복사 콘솔의 마이그레이션 클래스를 붙여 (예를 들어 add_name_to_user.rb) 2. 그런 다음 콘솔에서 다음을 입력
Sharding.run_on_all_shards{AddNameToUser.up}
그것은 이루어집니다!
-
==============================
10.당신이 콘솔에서 실행하려면이 당신이 찾고있는 것입니다 :
당신이 콘솔에서 실행하려면이 당신이 찾고있는 것입니다 :
$ rails console irb(main)> require "#{Rails.root.to_s}/db/migrate/XXXXX_my_migration.rb" irb(main)> AddFoo.migrate(:up)
나는 다른 답변을했지만, Rails.root없이 필요로하는 것은 나를 위해 일을 일부러.
또한, .migrate (:까지) 이미 실행하거나하지 않은 경우 일부 세력 마이그레이션에 관계없이 다시 실행합니다. 이것은 당신이 이미 마이그레이션을 실행할 때 유용합니다, DB를 만지작가 좀 그것을 취소하고 다시 그것을 가지고 빠른 솔루션을 원한다.
-
==============================
11.외모는 최신 레일 릴리스 (글을 쓰는 시점에서 5.2)으로 실행되는 마이그레이션을 필터링하는 또 하나 개의 방법이 적어도 좋아한다. 하나는 다음 마이그레이션 파일을 선택하기 위해 사용되는 범위 환경 변수에 필터를 전달할 수 있습니다.
외모는 최신 레일 릴리스 (글을 쓰는 시점에서 5.2)으로 실행되는 마이그레이션을 필터링하는 또 하나 개의 방법이 적어도 좋아한다. 하나는 다음 마이그레이션 파일을 선택하기 위해 사용되는 범위 환경 변수에 필터를 전달할 수 있습니다.
두 마이그레이션 파일이 가정 1_add_foos.rb 및 2_add_foos.run_this_one.rb 실행
SCOPE=run_this_one rails db:migrate:up
선택 만 2_add_foos.run_this_one.rb 실행됩니다. 범위를 일치하는 모든 마이그레이션 파일이 실행 된 것입니다 있음을 유의하십시오.
from https://stackoverflow.com/questions/753919/run-a-single-migration-file by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 3.1 및 이미지 자산 레일 (0) | 2020.02.21 |
---|---|
[RUBY-ON-RAILS] STI는 레일에 서브 클래스에 대한 모범 사례 경로를 처리하는 (0) | 2020.02.21 |
[RUBY-ON-RAILS] 레일 국제화 검증 중단 경고 (0) | 2020.02.21 |
[RUBY-ON-RAILS] MySQL은 액티브를 사용하여 DISTINCT ON을 사용하는 방법 (0) | 2020.02.21 |
[RUBY-ON-RAILS] 모델, 뷰, 컨트롤러 및 도우미 레일 : 무슨 일이 어디에 간다? (0) | 2020.02.21 |