浅析Ruby中的DATA对象

 更新时间:2015年05月11日 11:07:52   作者:李哲  
这篇文章主要介绍了Ruby中的DATA对象,包括对DATA.read方法的讲解等,需要的朋友可以参考下

这段代码能运行吗? 这个DATA是什么东西?

require 'erb'

data = DATA.read
max = 15_000
title = "hello world!"
content = "hello world!\n" * 10

max.times{
 ERB.new(data).result(binding)
}

__END__

<html>
 <head> <%= title %> </head>
 <body>
  <h1> <%= title %> </h1>
  <p>
   <%= content %>
  </p>
 </body>
</html>

这个神奇的DATA是一个IO对象,读取__END__之后内容。 有一点需要注意的是DATA.read会将__END__之后的内容一次性读出,由于IO读取的特性,当第 二次DATA.read的时候内容就会为空,如果需要第二次读取,那么先要执行DATA.rewind

有的时候我们写一个脚本来做一些自动化的工作,需要预先读取一个文件的内容,作为输入或者作为模版,我们可以先把这部分内容附到__END__后,然后用DATA来读取,因为它是标准的IO对象,我们可以像处理普通文件一样处理__END__后的内容,如上面的代码所示,用来存储ERB内容作为模版,然后再进行处理,非常的方便。

相关文章

  • ruby开发vim插件小结

    ruby开发vim插件小结

    作为一个Vimmer和Pythoner,之前折腾过用python编写vim插件。现在作为半个Rubist,又开始继续折腾。
    2014-07-07
  • Ruby on Rails中的ActiveRecord编程指南

    Ruby on Rails中的ActiveRecord编程指南

    这篇文章主要介绍了Ruby on Rails中的ActiveRecord编程指南,作者对编写ActiveRecord的通用习惯给出了建议,需要的朋友可以参考下
    2015-08-08
  • Ruby正则表达式详解

    Ruby正则表达式详解

    正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合,这篇文章纤细介绍了Ruby大的正则表达式,文章有详细的代码示例,需要的朋友可以参考一下
    2023-04-04
  • 详解Ruby当中的算数运算

    详解Ruby当中的算数运算

    这篇文章主要介绍了详解Ruby当中的算数运算,是Ruby学习当中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Ruby Gems更换淘宝源方法

    Ruby Gems更换淘宝源方法

    这篇文章主要介绍了Ruby Gems更换淘宝源方法,官方源有时不稳定,国内淘宝做了一个镜像,本文讲解更换成淘宝源的方法,需要的朋友可以参考下
    2015-01-01
  • 浅谈Ruby on Rails下的rake与数据库数据迁移操作

    浅谈Ruby on Rails下的rake与数据库数据迁移操作

    Rails中的Migration相对来说更适合做数据库的对象集合操作,而自动化的rake则是一个较好的选择,下面来浅谈Ruby on Rails下的rake与数据库数据迁移操作,需要的朋友可以参考下
    2016-06-06
  • Ruby中检测Gem是否安装的方法

    Ruby中检测Gem是否安装的方法

    这篇文章主要介绍了Ruby中检测Gem是否安装的方法,本文直接给出实现代码以及使用方法,需要的朋友可以参考下
    2015-01-01
  • Ruby on Rails迁移时的一些注意事项

    Ruby on Rails迁移时的一些注意事项

    这篇文章主要介绍了Ruby on Rails迁移时的一些注意事项,包括建议的使用change方法取代up与down方法等细节,需要的朋友可以参考下
    2015-08-08
  • Ruby的面向对象编程的基础教程

    Ruby的面向对象编程的基础教程

    这篇文章主要介绍了Ruby的面向对象编程的基础教程,包括Ruby中各种有关类和对象的基础知识,需要的朋友可以参考下
    2015-04-04
  • rails创建应用程序实例

    rails创建应用程序实例

    这篇文章主要介绍了rails创建应用程序实例,本文从零开始教你完成一个rails网站应用的创建过程,需要的朋友可以参考下
    2014-06-06

最新评论