ruby
大东爱宝宝
啦啦啦啦啦
展开
-
ruby block & proc & lambda
列表内容一、什么是ruby中的block? Block是一个统称,中文名称又叫闭包,英文是Closure,表现形式有block, Proc and lambda。Proc是对block的面向对象的封装, lambda是对Proc的进一步封装。block书写方式 大括号+代码 { p ‘hi’} do … end,也是代码块二、block 虽然Ruby中万物皆对象,但block是作原创 2017-07-11 00:01:34 · 384 阅读 · 0 评论 -
ActiveRecord 的数据三种预加载形式 - includes, preload, eager_load和joins(不是预加载)
引言:在平常的ActiveRecord的开发中使用sql语句方式有很多,那么ActiveRecord有没有提供我们一些便利的方式来实现这个魔法,其实有的,想知道详情请向下看。当然在开始之前我们准备下数据:class Province < ActiveRecord::Base has_many :cities has_many :viliagesendclass City < Active原创 2017-07-23 01:17:13 · 1447 阅读 · 0 评论 -
ActiveSupport eager_autoload源码分析
eager_autoload加载方式在一些开发中很是常见,先举个例子:module MyClass extend ActiveSupport::Autoload eager_autoload do autoload :Cache endend使用场景中可以直接在 App 启动的时候执行:MyClass.eager_load!在production环境下,我们只需在config.r原创 2017-07-22 16:51:27 · 351 阅读 · 0 评论 -
ActiveSupport autoload源码分析
在我们平常看一些gem或者开发中autoload用的还是很多的,闲的没事总结下这个方法的内部实现,分析一下源码。在我们看源码的时候经常看到如下代码:module ActiveRecord extend ActiveSupport::Autoload autoload :Attribute autoload :Base autoload :Callbacks autoload :Co原创 2017-07-22 15:35:07 · 380 阅读 · 0 评论 -
module 和 class 和 def (作用域门)
作用域门: 在ruby中有三个门,Module门, Class门, def门,这里的门就是作用域的门。 看下面代码:a1 = 1class A //作用域门:进入Class门 a2 = 2 p local_variables def hello //作用域门:进入def门 a原创 2017-07-16 16:27:50 · 806 阅读 · 0 评论 -
instance_eval(instance_exec) 和 class_eval(class_exec)
instance_evalBasicObject.public_methods.grep /instance_eval/ => [:instance_eval] BasicObject.instance_methods.grep /instance_eval/ => [:instance_eval] 从上面的方法我们可以发现,instance_eval 是实例方法也是类方法,所以实例和类都可原创 2017-07-16 15:55:24 · 415 阅读 · 0 评论 -
ruby Singleton Class和Singleton Method
也许你经常听说singleton class,但是并没有搞清楚它到底是什么,为啥呢,就我查的,概念太绕。绕了半天也不知道咋回事,所以要总结下呢,咳咳。首先我们要搞明白一个问题,管他是不是单例类,所以我们先搞明白一个类中的作用域,先举个例子吧:class A p self class self p self end def hello原创 2017-07-11 23:52:26 · 1316 阅读 · 1 评论 -
Ruby 的变量(作用域)
在讲解变量之前首先我们要明白什么是作用域? 简单的理解就是作用域是寄居在一定的区域类,相当于一个寄居场所。原创 2017-07-12 15:50:12 · 1396 阅读 · 0 评论 -
ruby 用block来创建hash
创建hash的方式有很多种,下面用block来创建下hash, 一般不太常用,小小总结下吧:看如下代码:hash = Hash.new {|hash, key| hash[key] = [] }hash[:one] << "Angelababy" => {:one=>["Angelababy"]}hash[:two] << "天霸动霸tua" {:one=>["Angelababy"],原创 2017-07-11 17:23:19 · 312 阅读 · 0 评论 -
ActionController::Base#render源码解析
提出问题:为什么要研究这个?在日常开发中controller中的render用的很多,或者说大部分用法都知道这么用,但是我好奇这个render到底做了什么,要不然用起来总感觉缺了点什么,下面就来尝试研究下源码。先前准备: welcome_controller.rbclass WelcomeController < Application`这里写代码片`Controller def inde原创 2017-07-31 23:06:00 · 388 阅读 · 0 评论