>

사진에 클립을 사용하는 항목 (샘플 데이터가 아닌 실제 시드 데이터)에 대한 많은 시드 데이터가 있습니다. 우리는 클립과 함께 S3를 사용하도록 설정되었습니다. 일반적으로 제안 된 방법 을 시드에로드하는 것은 이미 매우 느리게 진행되고 있습니다. 더 많은 항목을 추가하십시오. 씨앗은 이미 실행하는 데 약 5 분이 걸리므로이 작업 후 1 ~ 2 시간이 걸리므로 표준 git 브랜칭 스타일 워크 플로가 실제로 비실용적입니다. 우리는 개발 모드에서 S3를 돌릴 수 있지만 오히려 development 를 유지합니다.   production 에 가까운 환경  가능하다면

매번 업로드 과정을 거치지 않고 S3 링크를 재사용 할 수있는 방법이 있는지 확인하기 위해 클립 문서를 살펴 보았지만 아무것도 찾지 못했습니다. 이 문제를 해결할 수있는 클립 "표준"또는 친숙한 방법이 있습니까? Paperclip/S3를 사용하여 대량의 시드 파일을 어떻게 해결 했습니까?

감사합니다!


  • 답변 # 1

    실수하지 않으면 Paper Clip은 이미지의 파일 이름을 데이터베이스의 열에 저장합니다. 이 경우 "일반적으로 제안 된 방법"을 사용하여 데이터베이스를 한 번 시드 할 수 있습니다. Paper Clip이 데이터베이스를 시드하고 S3에 데이터를 업로드 한 후 파일 이름, 파일 크기 및 기타 파일 메타 데이터에 대해 데이터베이스를 쿼리 할 수 ​​있습니다.

    그런 다음 데이터베이스의 기존 데이터를 사용하여 새 시드 파일을 생성하여 레코드 값을 직접 할당 할 수 있습니다 (예 : 클립을 활용하지 않음)

    Paperclip으로 처리하지 않고 새 레코드를 만들려면이 예를 따르는 것이 좋습니다. 모델에 다음을 추가하십시오.

    attr_accessor :skip_image_processing
    before_asset_post_process :skip_image_processing?
    def skip_image_processing?
      self.skip_image_processing
    end
    
    

    다음과 같은 방법으로이 두 번째 시드 파일을 자동으로 생성 할 수도 있습니다 :

    @images_we_want_to_seed.each do |img|
       puts "Image.create("
       puts "  skip_image_processing: true,
       puts "  asset_file_name: img.asset_file_name,
       puts "  asset_file_size: img.asset_file_size,
       puts "  asset_content_type: image.asset_content_type,
         ....
       puts ")"
       puts " "
    end
    
    

    테스트하지는 않았지만 제대로 작동합니다.

  • 이전 javascript - 웹 소켓을 매끄럽게 리디렉션 할 수 있습니까?
  • 다음 python - 빅 데이터 세트의 데이터 재구성