Rails: не удалось найти concurrent-ruby-1.0.5 ни в одном из источников (Bundler :: GemNotFound)

Я немного погуглил и не нашел ничего полезного в моей ситуации.

$ docker-compose up abc

выводит в журналы следующее:

/usr/lib/ruby/vendor_ruby/bundler/spec_set.rb:92:in `block in materialize': Could not find concurrent-ruby-1.0.5 in any of the sources (Bundler::GemNotFound)
   from /usr/lib/ruby/vendor_ruby/bundler/spec_set.rb:85:in `map!'
   from /usr/lib/ruby/vendor_ruby/bundler/spec_set.rb:85:in `materialize'
   from /usr/lib/ruby/vendor_ruby/bundler/definition.rb:132:in `specs'
   from /usr/lib/ruby/vendor_ruby/bundler/definition.rb:177:in `specs_for'
   from /usr/lib/ruby/vendor_ruby/bundler/definition.rb:166:in `requested_specs'
   from /usr/lib/ruby/vendor_ruby/bundler/environment.rb:18:in `requested_specs'
   from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:13:in `setup'
   from /usr/lib/ruby/vendor_ruby/bundler.rb:121:in `setup'
   from /usr/lib/ruby/vendor_ruby/bundler/setup.rb:17:in `<top (required)>'
   from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
   from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'

Соответствующий бит из моего файла docker-compose.yml: command: bundle exec rails server

concurrent-ruby определенно устанавливается именно там, где он должен быть. Я так много раз запускал bundle install внутри Docker, и я пробовал добавить gem install concurrent-ruby -v 1.0.5 в свою команду docker-compose, и он устанавливается нормально, а затем все еще жалуется, что не может найти драгоценный камень. Я попытался добавить bundle install непосредственно в мою команду docker-compose, и это не удалось из-за известной проблемы, связанной с docker-compose и git (я использую два внутренних драгоценных камня). [Обновлено: https://github.com/docker/compose/issues/2856#issuecomment-236625662]

Все работало нормально, пока я не обновил некоторые драгоценные камни Ruby, но я не знаю, почему и как это исправить.

🤔 А знаете ли вы, что...
Ruby имеет богатую стандартную библиотеку, которая упрощает разработку приложений.


12
13 438
5

Ответы:

У меня была проблема, похожая на эту, за пределами Docker.

Я удалил Gemfile.lock и запустил bundle.

Проблема ушла.

Ваш пробег может отличаться.


Ничто не заставит его работать, если вы не переустановите metasploit-framework. Я столкнулся с проблемой в течение 1 недели. Я лично попробовал, и сейчас он работает.

$ pkg upgrade && pkg install git && pkg install curl && pkg install wget && pkg install nmap && curl -LO raw.githubusercontent.com/Hax4us/Metasploit_termux/master/metasploit.sh && chmod 777 metasploit.sh && ./metasploit.sh


У меня была такая же ошибка с docker-compose. Судя по всему, он устанавливал гем, после запуска docker-compose run backend bundle install файл Gemfile.lock обновился корректно. Тем не менее, он будет продолжать отображать эту ошибку либо для этого драгоценного камня, либо для других.

Оказывается, в некоторых случаях просто запустить установку пакета с помощью docker недостаточно. Как указано в документации здесь: https://docs.docker.com/compose/rails/ иногда после запуска установки пакета вам необходимо перестроить образы. Это устранило мою проблему:

docker-compose run backend bundle install
docker-compose build

tl; dr: Установить GEM_HOME = BUNDLE_PATH

Поскольку вы используете докер, я также предполагаю, что вы, возможно, меняете значение BUNDLE_PATH, чтобы вы могли кэшировать драгоценные камни? Если это так, вы также захотите установить для переменной GEM_HOME это значение.

Я не могу точно объяснить почему. Моя теория состоит в том, что ... что-то ... неправильно использует значение GEM_HOME, хотя должно использоваться BUNDLE_PATH, и поэтому драгоценных камней, которые вы установили из Gemfile вашего проекта rails, нет.


Обычно кешируют ваш пакет с помощью docker. Если вы это сделаете и обновили несколько драгоценных камней, вы столкнетесь с этой проблемой.

Удалите том и снова выполните docker-compose up.

docker volume ls

Затем:

docker volume rm <vol name>