微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的休息客户端请求会引发错误?

如何解决为什么我的休息客户端请求会引发错误?

我在发出休息客户端请求时收到以下错误

D:\programs\ruby\practice>ruby practice.rb
<internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require': D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: _1 is reserved for numbered parameter (SyntaxError)
D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: _2 is reserved for numbered parameter
D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: _3 is reserved for numbered parameter
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
        from D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mime-types-3.1/lib/mime/types.rb:226:in `<top (required)>'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
        from D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mime-types-3.1/lib/mime/types/columnar.rb:1:in `<top (required)>'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
        from D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/rest-client-2.1.0-x64-mingw32/lib/restclient/request.rb:8:in `<top (required)>'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
        from D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/rest-client-2.1.0-x64-mingw32/lib/restclient.rb:10:in `<top (required)>'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
        from D:/softwares/Ruby30-x64/lib/ruby/gems/3.0.0/gems/rest-client-2.1.0-x64-mingw32/lib/rest-client.rb:2:in `<top (required)>'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `rescue in require'
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:149:in `require'
        from practice.rb:1:in `<main>'
<internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- rest-client (LoadError)
        from <internal:D:/softwares/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
        from practice.rb:1:in `<main>'

这是我的代码

require 'rest-client'
response = RestClient.get 'https://www.linkedin.com/Feed/'
puts response

有人能解决这个问题吗?感谢感谢?

解决方法

您遇到了 gem 版本控制问题。需要 rest-client 时遇到的错误是:

.../mime-types-3.1/.../logger.rb:28: _1 is reserved for numbered parameter (SyntaxError)

这是 mime-types 所依赖的 gem rest-client 中的问题。 Ruby 引入了语法上的更改,以支持包含 _1,_2,... 保留字的块中的“编号参数”。这一变化意味着在 Ruby 2.7 中命名与该样式 (_1,etc.) 匹配的变量的人会收到警告。在 Ruby 3.0(您正在使用)中,这会导致语法错误。

您使用的 mime-types 版本 (3.1) 肯定有这种代码;它在 Ruby 3.0 之前工作,但现在坏了。好消息是最新版本的 mine-types 3.3.1 可与 Ruby 3 配合使用。您只需要更新您的 gem:

D:> gem update mime-types
Updating installed gems
Updating mime-types
Fetching mime-types-3.3.1.gem
Successfully installed mime-types-3.3.1

如果您使用的是 bundler,则可能需要更改 Gemfile 中的版本并重新运行 bundle install 以触发更新。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。