ruby - 无法使用 Ruby Errno::ENOENT 打开文件:没有这样的文件或目录 @ rb_sysopen
问题描述
使用 Ruby2.6.6
我无法以常规方式打开文件。
2.6.6 :006 > File.open "https://www.pocket-rocket.io/robots.txt"
Traceback (most recent call last):
7: from /Users/martinbraun/.rvm/rubies/ruby-2.6.6/bin/irb:23:in `<main>'
6: from /Users/martinbraun/.rvm/rubies/ruby-2.6.6/bin/irb:23:in `load'
5: from /Users/martinbraun/.rvm/rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
4: from (irb):6
3: from (irb):6:in `rescue in irb_binding'
2: from (irb):6:in `open'
1: from (irb):6:in `initialize'
Errno::ENOENT (No such file or directory @ rb_sysopen - https://www.pocket-rocket.io/robots.txt)
该文件存在,我可以使用我的浏览器浏览到它。但我不断收到这个错误。
我试过了:
require 'open-uri'
没有成功。
我在这里做错了什么?这个 Ruby 版本可能有问题吗?我找不到任何提示。
解决方案
File.open
期望文件在磁盘上,它不适用于远程文件。
相反,您可以使用Net::HTTP.get
,这将返回一个字符串。
url = URI('https://www.pocket-rocket.io/robots.txt')
Net::HTTP.get(url) # => "User-agent: *\nDisallow: /wp-admin/\nAllow: /wp-admin/admin-ajax.php\n"
推荐阅读
- android - 得到错误:忍者:错误复制文件构建停止:子命令失败
- python - 将 JWT 作为“x-my-jwt”标头附加到上游发布请求
- oracle - ORA-00979: 不是 GROUP BY 表达式 - 在选择中调用函数
- javascript - 为什么“if else 语句”不能正常工作?
- discord.py - 未定义的变量“公会”
- python - 如何在 google colaborary 中实现命令行参数?
- gremlin - 有没有办法在计算特征之前存储过滤的边缘
- javascript - 内部返回不渲染任何东西
- c - 跨多个文件使用变量而不用 extern 声明它
- c# - 为什么函数会在即时窗口中正确解析,而不是在 Visual Studio 文本编辑器中?