Rails | 시드 데이터의 읽기 순서를 번호로 제어하는 ​​괴로움에서 벗어나자.

2865 단어 seed-fuRails6
소개 시드 데이터의 읽기 순서를 제어하는 ​​방법으로서, 번호에 의한 접두사를 파일명에 붙여 관리하는 것이 일반적이라고 생각합니다. 그러나 이 경우, 이미 많은 사람이 경험되고 있는 것처럼, 자주(게다가 아무 생산성도 없는) 번호의 교환이 생기게 되어 버립니다군요. 그렇게 되기 전에 많은 노력을 들이지 않고 관리하는 방법을 제안하고 싶습니다. 이번에는 seed-fu를 사용하고 있습니다만, 기본적인 생각은 표준의 seed 시스템에서도 같습니다. 결론 seed.rb file_names = [ 'categories.rb', 'publishers.rb', 'authors.rb', 'books.rb' ] dir = Rails.root.join('db', 'fixtures', 'development', 'seeds') file_names.each do |file_name| puts "== Seed from #{dir}/#{file_name}" require "#{dir}/#{file_name}" 끝 시드 데이터를 읽을 때 디렉토리 바로 아래의 모든 시드 파일을 호출하는 것이 아니라, 읽고 싶은 파일을 로직으로 제어하도록 한 파일을 읽도록 변경한다. 방법 seed-fu 넣기 Gemfile gem 'seed-fu', '~> 2.3', '>= 2.3.9' $ bundle install rails db:seed 덮어쓰기 디폴트의 ​​db:seed 는 이용하지 않기 때문에 덧쓰기한다. $ rails g task seed lib/tasks/db/seed.rake # 취향에 따라 디렉토리 이동 네임 스페이스 : db do desc 'db:seed 명령을 db:seed_fu로 설정' task :seed do Rake::Task['db:seed_fu'].invoke # 이 문서 참조 끝 끝 시드 파일을 포함하는 디렉토리 만들기 seed-fu에서는 fixtures 디렉토리 바로 아래에 환경명의 디렉토리가 있는 경우, fixtures직하에 가세해 환경명 직하의 파일도 모두 읽어들이는 사양이 되어 있다. 따라서 환경 이름 바로 아래에 논리를 배치합니다. 아마도 일반적인 접두사가있는 디렉토리 구성 app/ └ db/ └ fixtures/ ├ development/ │ └ 01_categories.rb │ └ 02_publishers.rb │ └ 03_authors.rb │ └ 04_books.rb 격차가 없어지는 디렉토리 구성 app/ └ db/ └ fixtures/ ├ development/ │ ├ seeds/ │ │ └ authors.rb │ │ └ books.rb │ │ └ categories.rb │ │ └ publishers.rb │ │ │ └ seed.rb => 여기에 로직 넣기 └ production/ 디렉토리 구성은 development와 동일 이러한 디렉토리 구성으로 해두면, development 환경에서 rails db:seed 를 실행했을 때에 db/fixtures/development/seed.rb 만이 불린다. seed.rb로 읽기 순서 제어 db/fixtures/development/seed.rb file_names = [ 'categories.rb', 'publishers.rb', 'authors.rb', 'books.rb' ] dir = Rails.root.join('db', 'fixtures', 'development', 'seeds') file_names.each do |file_name| puts "== Seed from #{dir}/#{file_name}" require "#{dir}/#{file_name}" 끝 이상으로 완료. 로드 순서를 변경하고 싶을 때 예를 들어 sub_categories를 추가하고 publishers 앞에 로드하고 싶을 때, 지금까지는 01_categories.rb -> 01_categories.rb 새로운 02_sub_categories.rb 02_publishers.rb -> 03_publishers.rb 03_authors.rb -> 04_authors.rb 04_books.rb -> 05_books.rb 그리고 번호를 바꾸고 있었지만 seed.rb file_names = [ 'categories.rb', 'sub_categories.rb', 'publishers.rb', 'authors.rb', 'books.rb' ] 와 배열의 내용을 변경하면 된다. 참고

좋은 웹페이지 즐겨찾기