Ruby

Ruby 迭代器知识汇总

简单来说:迭代(iterate)指的是重复做相同的事,所以迭代器(iterator)就是用来重复多次相同的事。 迭代器是集合支持的方法。存储一组数据成员的对象称为集合。在 Ruby 中,数组(Array)和哈希(Hash)可以称之为集合。 迭代器返回集合的所有元素,一个接着一个。在这里我们将讨论两种迭代器,each 和 collect。 Ruby each 迭代器 each 迭代器返回数组或哈希的... »

Ruby 面向对象知识总结

Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现。Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串、数字,甚至连 true 和 false 都是对象。类本身也是一个对象,是 Class 类的一个实例。本章将向您讲解所有与 Ruby 面向对象相关的主要功能。 类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包。类中的数据和方法被称为类的成员。 R... »

深入分析Ruby 变量

变量是持有可被任何程序使用的任何数据的存储位置。 Ruby 支持五种类型的变量。 一般小写字母、下划线开头:变量(Variable)。 $开头:全局变量(Global variable)。 @开头:实例变量(Instance variable)。 @@开头:类变量(Class variable)类变量被共享在整个继承链中 大写字母开头:常数(Constant)。 Ruby 全局变量 全局变量以 $... »

深入分析Ruby 变量

变量是持有可被任何程序使用的任何数据的存储位置。 Ruby 支持五种类型的变量。 一般小写字母、下划线开头:变量(Variable)。 $开头:全局变量(Global variable)。 @开头:实例变量(Instance variable)。 @@开头:类变量(Class variable)类变量被共享在整个继承链中 大写字母开头:常数(Constant)。 Ruby 全局变量 全局变量以 $... »

以MVC的思维方式来理解Ruby on Rails框架的设计结构

在rails中,发送一个请求(/users)的处理全过程如下: 1)、浏览器发送请求(/users) 2)、Rails的 routes会把请求路由给users_controller的index方法 3)、users_controller回调用User Model获取所有的user 4)、User Model会从数据库中把所有的user读取出来, 5)、User Model把从数据库读取出来的所有u... »

详解Ruby on Rails中的mailer相关使用

    把 mails 命名为 SomethingMailer。 没有 Mailer 字根的话,不能立即显现哪个是一个 Mailer,以及哪个视图与它有关。     提供 HTML 与纯文本视图模版。     在你的开发环境启用信件失败发送错误。这些错误缺省是被停用的。 # config/environmen... »

关于Ruby on Rails路由配置的一些建议

当你需要加入一个或多个动作至一个 RESTful 资源时(你真的需要吗?),使用 member and collection 路由。 # 差 get 'subscriptions/:id/unsubscribe' resources :subscriptions # 好 resources :subscriptions do get 'unsubscribe', on: :member end #... »

ruby元编程之method_missing的一个使用细节

我们知道顶级域,定义域的self是啥? 代码如下: puts self    #main puts self.class #Object 我们知道当一个方法被调用的时候,如果没有对象接受,默认就是self,如: 代码如下: def tell_me_who     puts self end tell_me_who  #main ... »

用Ruby实现一个单元测试框架的教程

在去年的YOW Melbourne开发者大会上,我参加了一些研习班。这些研习班由@coreyhaines和 @rains负责,因此TDD(测试驱动开发)成为了主要讨论的内容。通常这不是一个问题,但是令人沮丧的是(考虑到这是2010年举办的开发者大会),那时上网还不是很方便,我刚装上linux的笔记本无法下载Rspec。幸运的是几周前,我决定自己写一个单元测试框架(因为我有这个能力:)),接着我就有... »

Ruby中一些常用的文件操作方法小结

初学Ruby,很多需要学习,现在开始尝试使用Ruby来写一个脚本,其中用到了很多文件相关的操作,这里阶段地整理一些。便于后续的再次查找。 文件或目录是否存在 代码如下: File.exist?(‘file_path’) 是否为文件 代码如下: File.file?(“file_path”) 是否为目录 代码如下: File.dir... »

浅析Ruby中的DATA对象

这段代码能运行吗? 这个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> &... »

ruby和pig处理流式文件实例

大数据操作中涉及到数据清洗步奏还是用脚本处理比较方便,下边介绍一下pig加载hdfs文件后调用ruby脚本处理数据,再返回数据流至pig中处理的一个简单案例。 注意:ruby的流式处理用到wukong这个gem包,相关下载: https://github.com/mrflip/wukong pig中加载分布式文件调用ruby流式处理: 代码如下: log = load ‘$INFILE... »

Ruby的基本语法学习总结

1、关键字 关键字不能用于定义变量或者常量,module,class,def , undef,defined?,if ,then,else,elsif,case ,when,unless,for,in,while ,until,next,break,do,redo ,retry,yield,not,and,or,true,false,nil,rescue,ensure,super,sel... »

Ruby中的变量学习总结

Ruby中的变量有几种形式,分别是局部变量、实例变量、类变量、全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: 一、命名方式 1.局部变量:小写字母或者“_”开头,如user,解释器解释到时才开始在内存中存在,一个良好的习惯是在进行变量定义时用nil进行赋值初始化,否则会出现类似undefined loc... »

ruby判断一个数是否为质数(素数)示例

ruby判断一个数是否为质数质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;(除0以外)否则称为合数 。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。 代码如下:def prime?(num)  res = [1]  res <<... »

你应该知道的Ruby代码风格

一、空格与tab使用空格缩进(95.364%)使用Tab缩进(4.636%)基于 1,001,987 次提交二、最大行宽80字符(92.618%)120字符(5.893%)150字符(1.489%)基于 1,057,374 次提交三、运算符、冒号、花括号周围,逗号、分号后是否使用空格不使用空格(73.366%) 代码如下:sum = 1 +2a,b = 1, 21>2 ? true : fa... »

ruby 模块

 Ruby的模块非常类似类,除了: 模块不可以有实体  模块不可以有子类  模块由module…end定义. 实际上…模块的’模块类’是’类的类’这个类的父类.搞懂了吗?不懂?让我们继续看下去吧. 模块有两种用法.其一是将相近的方法和实体放在一个相对集中的域里.Ruby标准包里的Math模块就扮演... »

Rails实现字段加密存储

方案 存储前,加密后再存储到数据库 读取后,利用 KEY 进行解密 实现 ActiveSupport::MessageEncryptor 是 Rails 基于 openssl 封装实现的一个类,可用于对一个对象进行加密、解密操作。例如: salt = SecureRandom.random_bytes(64) key = ActiveSupport::KeyGenerator.new('passw... »

Ruby面向对象编程中类的方法与类的扩展

类方法 类方法其实质是生活在该类的单件类中的单件方法。其定义方法有三种,分别是: # 法一 def MyClass.a_class_method; end # 法二 class MyClass def self.anther_class_method; end end # 法三* class MyClass class << self def yet_another_class_met... »

详解Ruby中的单件方法和单件类

单件方法 Ruby允许给单个对象增加方法,这种只针对单个对象生效的方法,称为单件方法 示例代码 str = “just a regular string” def str.title? self.upcase == self end str.title? # => false str.methods.grep(/title?/) # => [:title&... »

Redis集群搭建全记录

Redis集群是一个提供在多个Redis节点间共享数据的程序集。   Redis集群中不支持处理多个keys的命令。   Redis集群通过分区来提供一定程度的可用性。在某个节点宕机或者不可用的时候可以继续处理命令。 Redis集群数据分片   在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384... »

ruby 正则表达式详解及示例代码

在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang=”ruby”] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []: 范围描述符(如 [a-z]表示在a-z范围内的一个字母) \w: 字符或数字,相当于[0-9A-Za-z] \W... »

冒泡排序算法及Ruby版的简单实现

算法原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 实现 假设有这样一个数组: [4, 1, 3, 2] 冒泡排序为从第一个数开始,吧这个数与后面的数比较,如果这个数... »

Ruby程序中正则表达式的基本使用教程

Ruby大部分的内置类型都和其它的编程语言很相似。主要有strings,integers,floats,arrays等等。然而,只有脚本语言,如Ruby,Perl,和awk等提供了内置表达式类型的支持。正则表达式尽管比较隐蔽,但却是一个很强大的文本处理工具。 正则表达式是使用指定的模式匹配字符串的一种简单的方法。在Ruby中,创建正则表达式的典型方式是把模式写在两个斜线之间/pattern/。 毕... »

深入剖析Ruby设计模式编程中对命令模式的相关使用

命令模式是对象行为型使用率比较高的设计模式,别名:Action(动作),Transaction(事务) 意图: 将一个请求封装为一个对象,从而使你可对不同的请求进行参数化;对请求排队或记录请求日志,以及支持可取消的操作 这里所谓的“不同的请求”也既意味着请求可能发生的变化,是一个可能扩展的功能点。 动机: 方便扩展 结构: 协作说明:    参与角色:   ... »

Page 1 of 20123»