반응형
Rails 콘솔에서 마이그레이션 실행
콘솔에서 db : migrate 및 db : rollback에 대한 rake 명령을 실행하는 방법이 있습니까?
레일 환경이로드 될 때까지 기다리는 것은 짜증납니다!
이렇게하면 전체 레일 환경을 다시로드하지 않고도 마이그레이션 할 수 있습니다.
ActiveRecord::Migrator.migrate "db/migrate"
및 롤백 :
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3
콘솔에서 :
ActiveRecord::Migration.remove_column :table_name, :column_name
schema.rb
콘솔에서 마이그레이션을 실행 한 후 파일 을 업데이트하려면 다음을 실행해야합니다.rails db:migrate
콘솔에서 마이그레이션 명령을 실행하는 것이 더 깔끔하다는 또 다른 방법은 다음과 같습니다.
ActiveRecord::Schema.define do
create_table :foo do |t|
t.string :bar
t.timestamps
end
end
이것은 블록 내부의 내용이 실제 마이그레이션 파일 /에서 임의의 내용을 복사하여 붙여 넣는 것과 호환된다는 장점이 있습니다 schema.rb
.
레일 5.2의 경우 허용되는 답변이 제거되고 다음으로 대체되었습니다.
ActiveRecord::MigrationContext.new("db/migrate").migrate
여러 데이터베이스 연결을 추가하기 위해 작동하므로 향후 버전의 레일에서도 변경 될 수 있습니다.
배포 차단을 해제하기 위해 마이그레이션을 실행 한 척해야했는데 다음과 같이 수행 할 수 있습니다.
class Mig < ActiveRecord::Base; self.table_name = 'schema_migrations';end
Mig.create! version: '20180611172637'
% x [명령]을 사용할 수 있습니다.
%x[rake db:migrate]
마이그레이션을 실행 한 다음 콘솔을 다시로드하는 .irbrc 파일에 메서드를 만들었습니다.
def migrate
if defined? Rails::Console # turn off info logging for Rails 3
old_log_level = ActiveRecord::Base.logger.try(:sev_threshold)
ActiveRecord::Base.logger.sev_threshold = Logger::WARN
end
reload! && migations_ran = true if ActiveRecord::Migrator.migrate(Rails.root.join("db/migrate")).any?
ActiveRecord::Base.logger.sev_threshold = old_log_level if defined? old_log_level
migations_ran ||= nil # useful exit status
end
여기에서 전체 파일을 확인하세요 : https://gist.github.com/imme5150/6548368
참조 URL : https://stackoverflow.com/questions/7287250/run-migrations-from-rails-console
반응형
'programing' 카테고리의 다른 글
Javascript 문자열은 정규식으로 대체하여 잘못된 문자를 제거합니다. (0) | 2021.01.09 |
---|---|
정수를 로마 숫자로 변환 (0) | 2021.01.09 |
호환되는 iOS 버전에서 사용할 수있는 프로비저닝 된 iOS 장치가 없습니다. (0) | 2021.01.09 |
데이터 테이블에 페이지가 하나만있는 경우 페이지 매김 비활성화 (0) | 2021.01.09 |
테스트 탐색기에서 실행되지 않는 테스트 (0) | 2021.01.09 |