如何解决为什么我的休息客户端请求会引发错误?
我在发出休息客户端请求时收到以下错误:
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 举报,一经查实,本站将立刻删除。