모든 기본 Ruby Gem 플랫폼 캐싱
TL;DR
nokogiri와 같은 일부 종속성은 서로 다른 아키텍처에 대해 여러 라이브러리와 함께 제공됩니다. gem을 캐시하는 경우 개발 팀이 다양한 플랫폼에 분산되어 있거나 다른 플랫폼에 배포하기 때문에 여러 플랫폼을 캐시해야 할 수 있습니다. 이렇게 하려면 다음을 사용할 수 있습니다.
bundle cache # cache gems in vendor/cache
bundle lock --add-platform x86_64-linux # add additional platforms
bundle package --all-platforms # cache multiple platforms
번들러 버전 1.x에서 다음을 추가합니다.
bundle config specific_platform true
토종 노코기리
Nokogiri 1.11.0이 출시되었으며 그 중 하나인 흥미로운updates
다양한 플랫폼을 위해 미리 컴파일된 기본 보석이 포함되어 있습니다! 지원되는 플랫폼을 사용하는 경우 기본 확장으로 nokogiri를 설치하는 일은 끝났을 수 있습니다. 이러한changes 결과는 "훨씬 빠른 설치와 보다 안정적인 설치"를 제공합니다. 이 훌륭한 업데이트에 대한 관리자와 기여자에게 깊은 감사를 드립니다.
이러한 사전 컴파일된 gem으로 업데이트하는 것은 원활한 경험이어야 합니다. 번들러는 지원되는 버전에 있는 경우 적절한 사전 컴파일된
.gem
파일을 가져와서 사용합니다. 그러나 보석cache을 사용하고 여러 플랫폼을 캐시하려는 경우 완료해야 할 몇 가지 단계가 더 있습니다.캐시 적중
Gem 종속성은 앱과 함께 캐시될 수 있으며 그런 다음 해당 캐시를 사용하여 RubyGem 대신 애플리케이션의 종속성을 검색할 수 있습니다. 우리는 다양한 이유로 여러 프로젝트에서 이것을 활용하지만 모든 gem을 공급해야 하는 가장 중요한 것은 일부 응용 프로그램이 직접 액세스할 수 없는 환경에 배포되고 배포가 생성된다는 것입니다RubyGems. .
우리는 번들러에게 보석을 캐시하도록 알려야 합니다.
bundle cache
기존 애플리케이션에서 실행하면
.gem
파일이 vendor/cache
directory 에 추가됩니다.플랫폼 종속성
여러 플랫폼이 필요하다고 번들러에 알려야 합니다. 이 예의 경우 macOS를 실행하는 컴퓨터에서 개발 중이므로 nokogiri를 설치하면 해당 아키텍처에 대해 미리 컴파일된 gem이 됩니다give me. 훌륭하지만 배포 환경을 위한 Linux 기본 gem도 필요합니다.
먼저 플랫폼 추가를 bundler에 알려야 합니다.
bundle lock --add-platform x86_64-linux
그런 다음
Gemfile.lock
파일은 updated 해당 플랫폼을 나열합니다.플랫폼 독립성
그러나 종속성을 설치하기 전에 플랫폼을 추가하더라도 플랫폼을 추가해도 여전히 두 플랫폼의 파일
.gem
을 검색하고 캐시하지 않습니다. 우리는 또한 그것들을 캐시하도록 번들러에게 알려야 합니다 other platforms.bundle package --all-platforms
이제 우리의 다른 플랫폼은 기존 플랫폼과 함께 cached 입니다.
Bundler 버전 1.x를 사용하는 경우
specific_platform
구성setting을 설정해야 할 수도 있습니다.bundle config specific_platform true
이제
Gemfile.lock
에 지정된 모든 플랫폼에서 모든 gem 종속성을 캐시해야 합니다. 더 이상 nokogiri를 컴파일할 필요가 없습니다!This post originally published on The Gnar Company blog.
Reference
이 문제에 관하여(모든 기본 Ruby Gem 플랫폼 캐싱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thegnarco/caching-all-native-ruby-gem-platforms-lo2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)