`
jsntghf
  • 浏览: 2533580 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Ruby的OpenURI模块

阅读更多

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是嵌入ruby脚本的Nginx模块

    Ruby-ngxruby模块是Nginx服务器中的一个扩展,它允许开发者使用Ruby语言编写服务器端逻辑,从而增强Nginx的功能。Nginx以其高性能、轻量级的特性被广泛用于处理静态内容和反向代理任务,而通过ngx_ruby模块,Nginx...

    Ruby:Ruby模块与包的深入理解与应用

    Ruby:Ruby模块与包的深入理解与应用

    08Ruby 模块.docx

    ### Ruby 模块详解 #### 一、Ruby 模块简介 在 Ruby 语言中,模块(Module)是一个非常重要的概念。它不仅提供了一种组织代码的有效方式,还支持一种称为 Mixin 的特殊继承机制。模块可以被视为一个容器,用于存放...

    Ruby中使用SWIG编写ruby扩展模块实例

    在使用ruby/rails的过程中,确实发现有时性能不尽人意,如生成一个拥有600项的item的3层树形结构目录要花去20ms,为提高性能在学习用c/c++写ruby模块的过程中,认识了swig,rubyInline等一系列帮助编写c/c++来提升...

    ncurses-ruby, 用于访问ncurses库的ruby 模块.zip

    ncurses-ruby, 用于访问ncurses库的ruby 模块 ncurses红宝石用于访问ncurses库的ruby 模块概述这个自述文件解释了如何使用 ncurses ruby 接口。 假设读者对ncurses库的理解以及如何从C 语言中使用它有一个大致的理解...

    Ruby-此模块将直接在注册表中更改本地用户的密码

    在描述中提到的“此模块将直接在注册表中更改本地用户的密码”,这暗示了一个特定的Ruby模块可能被设计用来操作Windows操作系统的注册表,这是一个存储系统设置和配置信息的关键数据库。注册表中包含有关用户账户和...

    Ruby-Blender一个模块化的远程命令执行框架

    **Ruby-Blender:模块化远程命令执行框架详解** Ruby-Blender,作为一个模块化的远程命令执行框架,是Ruby开发者和DevOps工程师的利器。它旨在简化和自动化跨服务器的工作流,通过提供一套基础的原语,使得在多...

    编译ruby用到依赖模块(for windows)

    在Windows环境下编译Ruby,需要了解和准备一系列的依赖模块,因为Ruby的源代码编译并不像在Linux或macOS上那样直接。以下是一些关键的知识点,它们将帮助你成功地在Windows系统上编译Ruby: 1. **Visual C++ ...

    ruby 模块

    Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module…end定义. 实际上…模块的’模块类’是’类的类’这个类的父类.搞懂了吗?不懂?让我们继续看下去吧. 模块有两种用法.其一是将相近的...

    使用Ruby re模块创建复杂的正则表达式

    Ruby编程语言通过Re模块简化了构建复杂正则表达式的过程。 Re模块是Ruby中的一个库,专门用来辅助创建和管理正则表达式。使用Re模块,程序员可以以模块化的方式构建正则表达式,将一个复杂的表达式分解为多个小部分...

    Ruby-Rack一个模块化的Ruby服务器接口

    Rack提供了一个最小化,模块化和适应性强的界面,用于在Ruby中开发Web应用程序。 通过以最简单的方式包装HTTP请求和响应,它将Web服务器,Web框架和软件(所谓的中间件)之间的API统一并提炼成单个方法调用。

    ruby(前途大好的ruby+rains)

    6. **模块(Module)**:Ruby的模块用于实现命名空间,代码重用和混合(mixin)功能。一个类可以包含多个模块,实现多重继承的效果。 7. **异常处理**:Ruby提供了异常处理机制,通过`begin..rescue..end`结构捕获...

    Ruby-用来管理SSH的Puppet模块

    本模块是专门为使用Ruby编写的Puppet模块,用于管理SSH(Secure Shell),一个用于在不同系统间安全远程登录的网络协议。 SSH模块在Puppet生态系统中扮演着重要角色,因为它可以帮助自动化和标准化SSH服务器的配置...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    此外,你还会学习到Ruby的模块系统,它是组织代码和实现命名空间的一种方式。 Ruby的块(blocks)和 Proc 对象是其独特之处,它们提供了简洁的回调函数和迭代器。书中会深入解释这些概念,并通过实例展示它们在实际...

    Ruby-Configatron一个超级酷简单功能丰富的Ruby应用程序的配置系统

    **Ruby-Configatron:构建灵活应用配置的利器** 在Ruby世界中,良好的配置管理对于创建可扩展、可维护的应用程序至关重要。Configatron就是一个为解决这一问题而设计的库,它提供了一个简单易用且功能丰富的框架,...

    Ruby完全自学手册

    Ruby是一种简洁而功能强大的编程语言,由日本的松本行弘(Yukihiro "Matz" Matsumoto)在1993年开发,并于1995年公开发布。Ruby语言设计之初就非常注重开发人员的编程体验,它拥有自然、表达性强的语法,易于阅读和...

    apache mod_ruby

    这个模块极大地增强了Web开发的灵活性,因为它使得Ruby on Rails和其他基于Ruby的Web框架可以直接与Apache集成,提高了性能和响应速度。 在深入讲解mod_ruby之前,我们先了解一下Apache和Ruby的基本概念。Apache是...

    ruby基础教程(第四版)第8章 模块 1

    在Ruby编程语言中,模块(Module)是一个重要的概念,它在代码组织和功能复用方面起到了关键作用。在《Ruby基础教程(第四版)》的第8章中,我们探讨了模块的基本特性以及如何利用模块来扩展类的功能。 首先,模块...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

Global site tag (gtag.js) - Google Analytics