Ruby中获取一个HTTP/FTP地址的内容,有一个非常方便的方法,就是使用open-uri库。
open-uri库是ruby的标准附加库中所带的,引用了该附加库后,就可以像打开普通文件那样打开一个http/ftp的uri的资源。
有区别的地方在这里:
require 'open-uri'
open('d:/test.txt'){|file|
puts file.class => #File
}
open('http://www.xuexi6.com'){|file|
puts file.class => #Tempfile
}
可以看出,打开一个本机文件返回的是File类型,而打开一个uri返回的是一个Tempfile类型。
还有一点要注意,就是open-uri里面的open方法会自动对302 redirection重定向地址进行追踪访问,而Net::HTTP#get方法则不会自动追踪302重定向地址。
该函数最后返回的值,是传入的代码块最后的值。 可以这样获得uri的内容
data = open('http://www.xuexi6.com'){|f| f.read}
data = open('http://www.xuexi6.com'){|f| f}.open.read
第二句中open的原因是:open方法返回的流,是已经关闭了的tempfile,所以要先打开流,返回打开的流,再调用read读取。
分享到:
相关推荐
Ruby-ngxruby模块是Nginx服务器中的一个扩展,它允许开发者使用Ruby语言编写服务器端逻辑,从而增强Nginx的功能。Nginx以其高性能、轻量级的特性被广泛用于处理静态内容和反向代理任务,而通过ngx_ruby模块,Nginx...
Ruby:Ruby模块与包的深入理解与应用
### Ruby 模块详解 #### 一、Ruby 模块简介 在 Ruby 语言中,模块(Module)是一个非常重要的概念。它不仅提供了一种组织代码的有效方式,还支持一种称为 Mixin 的特殊继承机制。模块可以被视为一个容器,用于存放...
在使用ruby/rails的过程中,确实发现有时性能不尽人意,如生成一个拥有600项的item的3层树形结构目录要花去20ms,为提高性能在学习用c/c++写ruby模块的过程中,认识了swig,rubyInline等一系列帮助编写c/c++来提升...
ncurses-ruby, 用于访问ncurses库的ruby 模块 ncurses红宝石用于访问ncurses库的ruby 模块概述这个自述文件解释了如何使用 ncurses ruby 接口。 假设读者对ncurses库的理解以及如何从C 语言中使用它有一个大致的理解...
在描述中提到的“此模块将直接在注册表中更改本地用户的密码”,这暗示了一个特定的Ruby模块可能被设计用来操作Windows操作系统的注册表,这是一个存储系统设置和配置信息的关键数据库。注册表中包含有关用户账户和...
**Ruby-Blender:模块化远程命令执行框架详解** Ruby-Blender,作为一个模块化的远程命令执行框架,是Ruby开发者和DevOps工程师的利器。它旨在简化和自动化跨服务器的工作流,通过提供一套基础的原语,使得在多...
在Windows环境下编译Ruby,需要了解和准备一系列的依赖模块,因为Ruby的源代码编译并不像在Linux或macOS上那样直接。以下是一些关键的知识点,它们将帮助你成功地在Windows系统上编译Ruby: 1. **Visual C++ ...
Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module…end定义. 实际上…模块的’模块类’是’类的类’这个类的父类.搞懂了吗?不懂?让我们继续看下去吧. 模块有两种用法.其一是将相近的...
Ruby编程语言通过Re模块简化了构建复杂正则表达式的过程。 Re模块是Ruby中的一个库,专门用来辅助创建和管理正则表达式。使用Re模块,程序员可以以模块化的方式构建正则表达式,将一个复杂的表达式分解为多个小部分...
Rack提供了一个最小化,模块化和适应性强的界面,用于在Ruby中开发Web应用程序。 通过以最简单的方式包装HTTP请求和响应,它将Web服务器,Web框架和软件(所谓的中间件)之间的API统一并提炼成单个方法调用。
6. **模块(Module)**:Ruby的模块用于实现命名空间,代码重用和混合(mixin)功能。一个类可以包含多个模块,实现多重继承的效果。 7. **异常处理**:Ruby提供了异常处理机制,通过`begin..rescue..end`结构捕获...
本模块是专门为使用Ruby编写的Puppet模块,用于管理SSH(Secure Shell),一个用于在不同系统间安全远程登录的网络协议。 SSH模块在Puppet生态系统中扮演着重要角色,因为它可以帮助自动化和标准化SSH服务器的配置...
Ruby Ruby Ruby Ruby Ruby Ruby
此外,你还会学习到Ruby的模块系统,它是组织代码和实现命名空间的一种方式。 Ruby的块(blocks)和 Proc 对象是其独特之处,它们提供了简洁的回调函数和迭代器。书中会深入解释这些概念,并通过实例展示它们在实际...
**Ruby-Configatron:构建灵活应用配置的利器** 在Ruby世界中,良好的配置管理对于创建可扩展、可维护的应用程序至关重要。Configatron就是一个为解决这一问题而设计的库,它提供了一个简单易用且功能丰富的框架,...
Ruby是一种简洁而功能强大的编程语言,由日本的松本行弘(Yukihiro "Matz" Matsumoto)在1993年开发,并于1995年公开发布。Ruby语言设计之初就非常注重开发人员的编程体验,它拥有自然、表达性强的语法,易于阅读和...
这个模块极大地增强了Web开发的灵活性,因为它使得Ruby on Rails和其他基于Ruby的Web框架可以直接与Apache集成,提高了性能和响应速度。 在深入讲解mod_ruby之前,我们先了解一下Apache和Ruby的基本概念。Apache是...
在Ruby编程语言中,模块(Module)是一个重要的概念,它在代码组织和功能复用方面起到了关键作用。在《Ruby基础教程(第四版)》的第8章中,我们探讨了模块的基本特性以及如何利用模块来扩展类的功能。 首先,模块...
Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...