2009-12-17 4 views
13

디렉토리에 여러 파일이 있습니다. 나는 그 중 일부를 함께 압축 아카이브에 압축 싶습니다.Ruby on Rails를 사용하여 zip 아카이브를 만드는 방법은 무엇입니까?

그렇게하기 위해 various 이 있습니다. rubyzip과 같은 보석을 사용하거나 exec을 실행하고 명령 줄 도구를 사용할 수 있습니다.

이것은 내가 작업하고있는 시스템의 중요한 부분에 영향을 미치므로 Rails로 zip 파일을 만드는 방법에 대한 의견 및/또는 지침을 갖고 싶습니다.

답변

13

rubyzip은 좋은 선택입니다. 나는 이전에 일했던 소셜 앱에서 개인 메시징의 첨부 파일을 압축하는 데 사용했습니다. 그러나 압축 파일이 큰 크기 인 경우 예를 들어 delayed_job을 사용하여 몇 가지 백그라운드 처리를 수행하는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. rubyzip에 관해서는, 그것이 유지 되었습니까 아니면 적어도 완전히 작동합니까? 그리고 delayed_job을 주셔서 감사합니다, 내가 뭘하려고하는지에 대한 좋은 다음 단계처럼 들리네. – marcgg

+0

나는 그 프로젝트에서 더 이상 일하고 있지 않지만 작동한다고 믿는다. 어쨌든 당신은 여전히 ​​exec를 사용하여 그것을 실행하기 위해 리눅스에 명령을 보낼 수 있습니다. – khelll

+4

Rubyzip은 좋은 선택입니다. 아카이브의 내용을 압축 해제하기 위해 코드를 확장해야한다면 쉽게 추가 할 수 있으며 외부 프로그램에 의존하지 않아도됩니다. 일반적으로 말해서 (심지어 당신의 경우는 아닐 수도 있습니다), 보석을 사용하는 것이 더 나은 해결책 인 IMO입니다. – kiamlaluno

5

파일을 지우고 다른 작업을 수행하지 않는 경우, 설치 및 사용과 같은 사소한 작업이 많은 의미를 갖지 않기 때문에 압축을 수행하려면 exec 또는 system 또는 % x을 사용하는 것이 좋습니다.

그러나 일부 디렉토리를 압축하고 보석이 제공하는 다른 기능을 활용하는 것 이상을 원한다면 확실한 선택은 rubyzip 보석을 사용하는 것입니다.

+3

그냥 지퍼로 보석을 사용하는 것이 왜 안 좋을까요? 당신은 정교 할 수 있습니까? – marcgg

+3

당신은 단지 불필요한 추상 레이어를 추가하는 것입니다. Exec은 시스템 명령을 직접 호출합니다. 젬을로드하는 것은 좋은 이유없이 메모리 오버 헤드가 있습니다. 그래도 보석의 다른 기능을 사용하려면 꼭 사용하십시오. – bensie

+0

정확히 bensie가 말한 것인데 – nas

-3

gzip이 옵션 인 경우 Gzip을 ActiveSupport에 포함하는 것이 좋습니다.

관련 문제