Я немного погуглил и не нашел ничего полезного в моей ситуации.
$ 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 имеет богатую стандартную библиотеку, которая упрощает разработку приложений.
У меня была проблема, похожая на эту, за пределами 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, нет.