Запущенный пакет или rspec добавляет строку в Gemfile.lock
После запуска различных команд (например, bundle и rspec) в проекте Ruby, Gemfile.lock
обновляется и x86_64-darwin-17
добавляется в PLATFORMS
заголовок. Почему это происходит? Как я могу предотвратить это?
Бег gem env
дает этот интересный контекст:
○ → gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.6
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]
#...etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-17
3 ответа
Ответ от @RangerRanger у меня не сработал, но я проверил документацию упаковщика, как и он, и нашел это, кто работал на меня:
force_ruby_platform (BUNDLE_FORCE_RUBY_PLATFORM): игнорировать платформу текущего компьютера и устанавливать только драгоценные камни платформы ruby. В результате гемы с нативными расширениями будут скомпилированы из исходников.
Вот команда:
bundle config force_ruby_platform true
Это было вызвано глобальной конфигурацией комплектов. Установка в false остановила поведение.
specific_platform (BUNDLE_SPECIFIC_PLATFORM): разрешить компоновщику разрешать для конкретной работающей платформы и сохранять его в файле блокировки, вместо того, чтобы использовать только общую платформу. Конкретной платформой является точная триплетная платформа, сообщаемая Gem::Platform.local, например x86_64-darwin-16 или universal-java-1.8. С другой стороны, универсальными платформами являются такие, как ruby, mswin или java. В этом примере x86_64-darwin-16 будет соответствовать ruby, а universal-java-1.8 - java.
Если вы хотите установить зависимости без обновления Gemfile.lock
Просто используйте --frozen
вариант. например bundle --frozen
, Это установит зависимости как обычно, за исключением обновления Gemfile.lock
редактировать
Если это не очень хорошее решение, возможно, лучше всего добавить Gemfile.lock
к .gitignore
специфично для вашего локального репо. Вы можете создать один на your_repo/.git/info/exclude
согласно этому ответу