无法在任何来源中找到concurrent-ruby-1.0.5(Bundler :: GemNotFound)

问题描述 投票:7回答:4

我已经用Google搜索了一下,并没有发现任何对我的情况有用的东西。

$ 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绝对是安装的,确切地说就是它需要的地方。我在Docker里面运行bundle install很多次了,我尝试将gem install concurrent-ruby -v 1.0.5添加到我的docker-compose命令中,它安装得很好,然后仍然抱怨它找不到宝石。我尝试将bundle install直接添加到我的docker-compose命令,但由于涉及docker-compose和git(我使用两个内部gem)的一些已知问题而失败。 [编辑:https://github.com/docker/compose/issues/2856#issuecomment-236625662]

一切正常,直到我升级了一些Ruby宝石,但我不知道为什么或如何解决它。

ruby docker rubygems docker-compose bundler
4个回答
7
投票

我在Docker之外遇到了类似的问题。

我删除了Gemfile.lock并运行bundle

问题消失了。

你的旅费可能会改变。


1
投票

我和docker-compose有同样的错误。显然,它正在安装gem,在运行docker-compose run backend bundle install之后,Gemfile.lock文件已正确更新。不过,它会继续为这个宝石或其他人显示这个错误。

事实证明,在某些情况下,使用docker运行bundle install是不够的。正如此处的文档中所述:https://docs.docker.com/compose/rails/有时在运行bundle install后需要重建映像。这解决了我的问题:

docker-compose run backend bundle install
docker-compose build

0
投票

除非重新安装metasploit框架,否则什么都不会有效。我一直面临这个问题一周。我亲自尝试过它现在正在运行。

$ 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


0
投票

tl; dr:设置GEM_HOME = BUNDLE_PATH

既然您正在使用docker,我还假设您可能正在更改BUNDLE_PATH的值,以便您可以缓存宝石?如果是这样,您还需要将GEM_HOME变量设置为此值。

我无法准确解释原因。我的理论是......当它应该使用GEM_HOME时,某些东西错误地使用了BUNDLE_PATH的值,因此你从rails项目的Gemfile安装的宝石不存在。

热门问题
推荐问题
最新问题