我已经在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 gem之前,一切工作都很好,但是我不确定为什么或如何修复它。
答案 0 :(得分:7)
在Docker之外,我遇到了类似的问题。
我删除了Gemfile.lock
,然后运行bundle
。
问题消失了。
您的里程可能会有所不同。
答案 1 :(得分:1)
我在docker-compose上遇到了同样的错误。显然,运行docker-compose run backend bundle install
后Gemfile.lock文件已正确更新,这是在安装gem。尽管如此,它将继续针对该gem或其他显示此错误。
事实证明,在某些情况下,仅使用docker运行bundle install是不够的。如此处的文档中所述:https://docs.docker.com/compose/rails/,有时在运行捆绑软件安装后,您需要重建映像。这解决了我的问题:
docker-compose run backend bundle install
docker-compose build
答案 2 :(得分:0)
除非重新安装metasploit-framework,否则一切都无法正常进行。我已经面对这个问题1周了。我已经亲自尝试过,并且现在可以运行。
$ pkg升级&& pkg安装git && pkg安装curl && pkg安装 wget && pkg安装nmap && curl -LO raw.githubusercontent.com/Hax4us/Metasploit_termux/master/metasploit.sh && chmod 777 metasploit.sh && ./metasploit.sh
答案 3 :(得分:0)
tl; dr:设置GEM_HOME
= BUNDLE_PATH
由于您使用的是docker,因此我还假设您可能正在更改BUNDLE_PATH
的值,以便可以缓存gems?如果是这样,您还需要将GEM_HOME
变量设置为此值。
我无法确切解释原因。我的理论是……某事……在应该使用GEM_HOME
时错误地使用了BUNDLE_PATH
的值,因此从rails项目的Gemfile
安装的gem不存在。
答案 4 :(得分:0)
使用docker缓存捆绑包是很常见的。如果您这样做了,并且更新了一些宝石,就会遇到这个问题。
删除卷并再次组成docker。
docker volume ls
然后:
docker volume rm <vol name>