Ruby - пакет установить/обновить слишком медленно
Я только что установил RVM, Ruby, Rails и т.д. на своем виртуальном ubuntu 12.04 32bit, работающем в виртуальном боксе. Теперь я столкнулся с проблемой, что для моих первых рельсов проект bundle install
или bundle update
занимает очень много времени. Даже когда я создаю новый проект с рельсами (который включает bundle install
).
Я использую только стандартные драгоценные камни:
source 'https://rubygems.org'
gem 'rails', '3.2.12'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development do
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.2'
Я попробовал установку пакета без каких-либо драгоценных камней, но gem 'rails', '3.2.12'
. После этого я снова набрал bundle install
со всеми драгоценными камнями в моем gemfile. Мне потребовалось 10 минут, чтобы проверить зависимости. Выходной сигнал --verbose представляет собой комбинацию HTTP success
и HTTP redirection
.
Версия Rails: Rails 3.2.12
Ruby version: ruby 1.9.3p392 (2013-02-22 версия 39386)
Rvm: rvm 1.18.18
версия пакета: версия Bundler 1.3.2
Я уже искал решение, но ничего не помогло.
Ответы
Ответ 1
Изменение https
до http
в моем Gemfile делало магию. Прежде чем я должен создать проект с помощью rails new APP --skip-bundle
Я хочу предупредить здесь, что есть цель безопасности для использования https через http. Сначала попробуйте другие ответы, упомянутые в этой теме.
Ответ 2
Bundler просто получил обновление параллельной обработки драгоценных камней.
gem install bundler --pre
будет решать проблему наилучшим образом на данный момент.
Источник
Ответ 3
Bundler v1.12.x был выпущен в 2016 году и заставил некоторых пользователей испытать медленные проблемы с установкой пакета.
В этом случае оставаться с v1.11.2 является лучшим вариантом (это быстро), пока не будет выпущено исправление.
Стоит переходить к Rubygems.org, чтобы попробовать разные версии жгута пробки.
Проверить существующие версии поставщика, удалить существующую версию, пример версии 1.11.2:
gem list | grep bundler
gem uninstall bundler -v existing-version-number
gem install bundler -v 1.11.2
Ответ 4
Вы также можете использовать несколько заданий, это может немного улучшить
bundle install --jobs 8
Вот учебник об этом
Ответ 5
Если вы все еще видите эту проблему с Bundler 1.12.5, вы можете попробовать обновить OpenSSL, используемый вашим Ruby.
Для меня это было так:
pmorse$ bundle --version
Bundler version 1.12.5
pmorse$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1j 15 Oct 2014
pmorse$ openssl version
OpenSSL 0.9.8zg 14 July 2015
pmorse$ brew info openssl
openssl: stable 1.0.2h (bottled) [keg-only]
[... больше brew
вывод...]
pmorse$ rvm reinstall ruby-2.2.2 --with-openssl-dir=`brew --prefix openssl`
[... много результатов rvm
...]
pmorse$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.2h 3 May 2016
Это должно сделать bundle
быстрее, не требуя перехода от https
до http
.
Ответ 6
Другим способом для разработчиков является переопределение сервера gem с более быстрой альтернативой.
В нашем случае мы можем настроить http
как зеркало для обращения к медленным https
соединениям:
bundle config mirror.https://rubygems.org http://rubygems.org
Это позволяет сохранить исходную конфигурацию Gemfile
, продолжая использовать более быстрые http
соединения для извлечения драгоценных камней.
Если вы хотите вернуться к https
:
bundle config --delete mirror.https://rubygems.org
bundle config
имеет параметр по умолчанию --global
. Вы можете указать --local
для ограничения конфигураций в локальной папке приложения.
Конфигурация сохраняется в глобальном ~/.bundle/config
и локальном .bundle/config
.
Ответ 7
Я знаю, что это может быть основным ответом, но попробуйте установить инструменты разработчика с основного сайта Ruby. У меня была аналогичная проблема, и это действительно сработало. Иногда простые решения являются лучшими!
Удачи!