복붙노트

[RUBY-ON-RAILS] 어떻게 부하 DB에 : 씨앗 데이터 테스트 데이터베이스에 자동으로?

RUBY-ON-RAILS

어떻게 부하 DB에 : 씨앗 데이터 테스트 데이터베이스에 자동으로?

나는 레일로드 종자 데이터의 새로운 표준 방법을 사용하려고 해요 2.3.4+의 DB : 종자 레이크 작업.

정말 제대로 작동에 내 응용 프로그램에 필요한로드 일정 데이터입니다.

DB를 얻을 수있는 가장 좋은 방법은 무엇입니까 : 데이터가 미리 입력되도록 종자 작업은 테스트 전에 실행?

해결법

  1. ==============================

    1.DB를 : 종자 레이크 작업은 주로 단지 dB / seeds.rb 스크립트를로드합니다. 따라서 단지 데이터를로드하기 위해 해당 파일을 실행합니다.

    DB를 : 종자 레이크 작업은 주로 단지 dB / seeds.rb 스크립트를로드합니다. 따라서 단지 데이터를로드하기 위해 해당 파일을 실행합니다.

    load "#{Rails.root}/db/seeds.rb"
    
    # or
    
    Rails.application.load_seed
    

    당신은 어디에서 사용하는 테스트 어떤 프레임 워크에 따라 달라집니다 당신이 처음에 한 번만 모든 테스트 전에로드 또는할지 여부를 배치합니다. 당신은 설정 호출 또는 test_helper.rb 파일에 넣을 수 있습니다.

  2. ==============================

    2.나는 그것이 있어야 말하고 싶지만

    나는 그것이 있어야 말하고 싶지만

    namespace :db do
      namespace :test do
        task :prepare => :environment do
          Rake::Task["db:seed"].invoke
        end
      end
    end
    

    때문에 DB : 테스트 : 부하가 실행되지 않습니다 당신이 config.active_record.schema_format =이있는 경우 : SQL을 데이터베이스 (DB : 테스트 : clone_structure입니다)

  3. ==============================

    3.테스트 : lib 디렉토리 / 작업 / test_seed.rake이 같은 것을 넣는 것은 dB 후 종자 작업을 호출해야 부하를 :

    테스트 : lib 디렉토리 / 작업 / test_seed.rake이 같은 것을 넣는 것은 dB 후 종자 작업을 호출해야 부하를 :

    namespace :db do
      namespace :test do
        task :load => :environment do
          Rake::Task["db:seed"].invoke
        end
      end
    end
    
  4. ==============================

    4.나는 스티브의 코멘트 위의 올바른 해답이 될 전망이다. 당신은 당신의 테스트 envoironment에 종자 데이터를로드 할 Rails.application.load_seed를 사용할 수 있습니다. 그러나, 및로드 된이 데이터는 몇 가지에 따라 얼마나 자주 :

    나는 스티브의 코멘트 위의 올바른 해답이 될 전망이다. 당신은 당신의 테스트 envoironment에 종자 데이터를로드 할 Rails.application.load_seed를 사용할 수 있습니다. 그러나, 및로드 된이 데이터는 몇 가지에 따라 얼마나 자주 :

    모든 테스트 전에 (이 Github에서 문제 참조) 일단이 파일을 실행하는 데 편리한 방법은 없습니다. 당신은 가능성이 테스트 파일의 설정 방법, 각 시험 전에 한 번 데이터를로드해야합니다 :

    # test/models/my_model_test.rb
    class LevelTest < ActiveSupport::TestCase
    
      def setup
        Rails.application.load_seed
      end
    
      # tests here...
    
    end
    

    사용 RSpec에의 전 (모든)이 모델에 대한 모든 테스트를위한 부하 씨앗 데이터 방법 :

    describe MyModel do
      before(:all) do
      Rails.application.load_seed
    end
    
    describe "my model..." do
      # your tests here
    end
    

    도움이 되었기를 바랍니다.

  5. ==============================

    5.우리는 DB를 호출하고 있습니다 : 씨앗을 dB의 일환으로 : 테스트 : 준비와 함께 :

    우리는 DB를 호출하고 있습니다 : 씨앗을 dB의 일환으로 : 테스트 : 준비와 함께 :

    레이크 :: 작업 [ "DB : 씨"]. 호출

    그런 식으로, 종자 데이터는 전체 테스트 실행을 위해 일단로드, 그리고 테스트 클래스에 한 번씩한다.

  6. ==============================

    6.seedbank를 사용하는 경우,이 씨앗이로드되는 방식을 변경, 솔루션은 여기에 제공된 ... 당신은 아마 / 부하를 사용하지 않을 수 있도록.

    seedbank를 사용하는 경우,이 씨앗이로드되는 방식을 변경, 솔루션은 여기에 제공된 ... 당신은 아마 / 부하를 사용하지 않을 수 있도록.

    그리고 단지 레이크 퍼팅 :: 작업 [ 'DB : 씨앗']. test_helper이 결과로 호출 :

    Don't know how to build task 'db:seed' (RuntimeError)
    

    우리가 그 전에 load_tasks을 추가 할 때, 그것은 일 :

    MyApp::Application.load_tasks
    Rake::Task['db:seed'].invoke
    
  7. ==============================

    7.레이크을 추가 :: 작업. 테스트 : [ "DB : 씨앗은"] DB를에 호출 레이크 작업이 나를 위해 작동하지 않았다 준비합니다. 테스트 : 나는 레이크 DB와 데이터베이스를 준비 할 경우 준비하고 테스트 환경에서 콘솔을 입력, 내 모든 씨앗이 있었다. 그러나, 씨앗 내 테스트 사이에 지속되지 않았다.

    레이크을 추가 :: 작업. 테스트 : [ "DB : 씨앗은"] DB를에 호출 레이크 작업이 나를 위해 작동하지 않았다 준비합니다. 테스트 : 나는 레이크 DB와 데이터베이스를 준비 할 경우 준비하고 테스트 환경에서 콘솔을 입력, 내 모든 씨앗이 있었다. 그러나, 씨앗 내 테스트 사이에 지속되지 않았다.

    내 설정 방법에 부하 "# {Rails.root} /db/seeds.rb"를 추가하면, 벌금을하지만했다.

    나는 자동으로로드 및 지속이 씨앗을 얻을 싶어요,하지만 난 아직 할 수있는 방법을 발견하지 않았습니다!

  8. from https://stackoverflow.com/questions/1574797/how-to-load-dbseed-data-into-test-database-automatically by cc-by-sa and MIT license