- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
当我运行 bundle
时,我得到以下信息:
`bundle' 命令存在于这些 Ruby 版本中:
2.1.8
2.4.2
jruby-9.1.15.0
我的项目使用 Ruby-2.5.1,所以我尝试使用 gem install bundler
更新我的 bundler ,但我收到以下错误:
错误:执行 gem 时...(ArgumentError)
参数数量错误(给定 1,预期 0)
使用--backtrace
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:47:in `require'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:162:in `initialize'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:104:in `new'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:104:in `at'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/resolver/specification.rb:93:in `install'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:166:in `block in install'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:156:in `each'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:156:in `install'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:251:in `install_gem'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:301:in `block in install_gems'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:297:in `each'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:297:in `install_gems'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:204:in `execute'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/command.rb:310:in `invoke_with_build_args'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/command_manager.rb:169:in `process_args'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/command_manager.rb:139:in `run'
/Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/gem_runner.rb:55:in `run'
/Users/spencerbailey/.rbenv/versions/2.5.1/bin/gem:21:in `<main>'
额外信息:
最佳答案
这发生在我的系统上,所以我研究了一段时间。这似乎是 Ruby 2.5 和 RubyGems < 2.6.10 之间的不兼容。
如果您想安装 Ruby 2.5,请确保您的 RubyGems >= 2.6.10。您可以明确指定要使用的 RubyGems 版本(例如,我调用了 rvm rubygems 2.7.7
)或者它可能只更新到更新版本的 RVM/rbenv/etc。
如问题中的回溯所示,错误发生在调用require
时。这是 RubyGems 编写的 require
版本,用于替换 Ruby 自带的定义。在 2.6.10 之前的 RubyGems 中,这部分代码看起来像这样:
spec = Gem.find_unresolved_default_spec(path)
if spec
Gem.remove_unresolved_default_spec(spec)
gem(spec.name)
end
( source )
调用gem(spec.name)
时出现错误,但为什么?
它最终与 Ruby 的一个怪癖有关。尽管 require
看起来有点像内置关键字,但它实际上是 Kernel
模块中的一个方法。该模块包含在 Object
中,因此可以从 Object
的任何对象(包括脚本/控制台顶层的“main”对象)调用该方法).但最终它仍然是您从中调用它的任何对象的方法,因此 require
中没有显式接收器的任何方法调用都会在同一个对象上调用。
适用正常的继承规则,因此如果您的对象没有明确的 gem
方法,将调用 RubyGems 在 Kernel
中定义的方法,这很棒。但是,如果您的对象确实有自己的 gem
方法,则会改为调用该方法,这不太可能起作用。在这种情况下,require 'fileutils'
是从 Gem::Installer
(https://github.com/rubygems/rubygems/blob/v2.6.9/lib/rubygems/installer.rb#L162) 的初始化程序中调用的。 Gem::Installer
类有自己的零参数 gem
方法,由 attr_reader :gem
创建。 require
代码试图用一个参数调用它,但我们遇到了错误。
(此问题在 RubyGems 2.6.10 中通过将 gem
调用更改为 Kernel.send(:gem, spec.name)
在 https://github.com/rubygems/rubygems/pull/1822 中得到解决。这是由 Bundler 库中有些类似的困难引起的,它也有一个对象定义了它自己的 gem
方法。)
最后一个问题是为什么这发生在 Ruby 2.5 而不是之前。事实证明,这个对 gem
的特定调用仅在尝试要求“默认”gem 时发生。在 2.5 之前的 Ruby 版本中,“fileutils”不是默认的 gem,因此这些版本设法避免了这个特殊问题,即使是旧版本的 RubyGems。只有在 Ruby 2.5 使“fileutils”成为默认 gem 时,才会出现这个奇怪的问题。
关于ruby-on-rails - Gem 安装错误数量的参数(给定 1,预期 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139114/
当我输入时: gem env 在我的 Windows 系统上,它会生成以下信息: RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY
我记得我用过 gem install rails安装 Rails,但今天当我想安装另一个 gem 时,输入 gem install ruby-recaptcha 它失败了,说: You don't h
我有一个要重命名的 gem 。它是published on RubyGems。我最担心的是人们想要更新它。 我看到了两条路,但是我真的很想听听重命名 gem 的人是如何做到的。 1.把旧的变成一个元包
$ gem install passenger Fetching: passenger-4.0.5.gem (100%) ERROR: While executing gem ... (Gem::F
我刚刚用 gem update mime-types 更新了 mime-types gem . gem list显示 mime-types (1.16)在更新之前。更新后gem list显示 mime
如果我构建了一个私有(private) gem(例如,在我的公司内部托管),然后我想在我正在构建的另一个 gem(不是应用程序!)中重用该 gem,我该怎么做? 我应该在哪里放置我的依赖项并告诉我的新
我正在编写一个具有多个 gem 依赖项的 gem,其中一个依赖于破坏新版本向后兼容性的 gem。这让我开始思考——我不希望我正在构建的 gem 变成“那个 gem”,让人们难以更新他们的应用程序。我也
我目前正在构建一个需要 mysql2 gem 的 RoR 项目。我成功安装了 gem 。因为它出现在我的 gem 列表中。 [root@vc2cmmka035538n simple_cms]# gem
我试图在 XP 上构建 capybara-webkit。我关注了this操作说明。它说要进行捆绑安装: $ cd ruby193\capybara-webkit $ bundle install
是否有可能为 Ruby 提供类似“本地”gem 存储库的东西? 我正在开发一个没有管理员权限的自定义 Linux 发行版。 Ruby 安装在机器上 (v.1.8.7),但显然没有安装“gem”或“bu
我是使用 gems 的新手,所以如果我的事实有误,请原谅我。 我想将 Bundler 从 v1.3.5 更新到最新版本 (v1.5.3),所以我尝试这样做: sudo gem install bund
如何使用 gem install 同时安装多个 gem,同时指定我想要的版本? 例子: gem install akami -v 1.2.0 --ignore-dependencies gem in
我正在尝试在 XP 上构建 capybara-webkit。我关注 this instruction .我说: 8) Clone latest version of capybara-webkit f
我正在尝试设置我自己的私有(private) gem 服务器,它应该为我的 gem 提供服务并显示 rdoc。正如我所读,默认的 gem 服务器应该能够做到这一点。由于我不希望除了我自己的所有 gem
假设我的 gem 是 VideoPlayer。文件夹结构是: VideoPlayer/ /bin vidplay.rb /lib VideoPlayer
如何避免 gem 清理特定错误。我在执行 gem 清理时看到以下错误。 Gem::InstallError: gem-wrappers 未安装在 GEM_HOME 中 gem cleanup Clea
我写了一个 gem elastic-beanstalk这将在 rails 项目文件结构中使用,以及在 rails 目录和文件不可用(无需解压缩等)的独立 CI 环境中使用。即正在运行的 Bamboo
运行“sudo gem list --local”和“gem list --local”给我不同的结果。我的 gem 路径设置为我的主文件夹,并且仅包含来自“gem list --local”的 ge
最初,我发布了 Stack Overflow 问题 Ruby on Rails gems... Re-open models (现已删除)。但我认为这个问题太令人困惑了……我会根据我的发现尝试提出不同
我使用 OS X El Capitan 10.11.6 首先,我在安装 pod 时遇到问题,按照本网站中的步骤进行操作后能够找到问题..终端拼出问题是我安装后的 ruby v 2.2.2当我尝试安
我是一名优秀的程序员,十分优秀!