2011-03-22 2 views
0

저는 Nokogiri를 사용하여 약 1,000,000 개의 ActiveRecord 객체 목록을 작성했습니다. 지금 나는 빌더를 만들고 그것을 반환하기 위해 각 객체에 대한 메소드를 호출하고 있습니다. 그것은 잘 작동하지만 어떻게 든 빈 빌더 요소를 생성하고 (또는 무언가를 복제 할 수 있는지 궁금Nokogiri :: XML :: Builder 객체를 값 비싼 프로세스로 생성하고 있습니까?

builder.to_xml 

, 즉 단지 비싼 수 있습니다 : 그럼 난과 함께 이미 열려있는 파일이 빌더 쓰기 작업)을 생성하고 AR 인스턴스 메서드로 보냅니다.

답변

0

개체가 1,000,000 개있는 경우 ERB 또는 Erubis를 사용하여 손으로 코드 된 템플릿을 사용하여 XML을 생성합니다.

Nokogiri는 동적으로 각 요소를 생성하므로 각 개체에 대해 수행 할 작업을 이미 알고있는 프로세스의 속도에 비해 비용이 많이 듭니다.

Erubis는 ERB보다 빠르지 만 ERB는 Rails의 표준입니다. 템플릿은 서로 바꿔 사용할 수 있습니다.

다른 대안은 선택한 레코드를 쿼리를 기반으로 XML로 출력하도록 데이터베이스를 가져올 수 있는지 확인하는 것입니다. 데이터 파일을 생성하는 가장 빠른 방법이 될 것입니다.