faye源代码研究所作的笔记

1,如何深度复制一个对象?
def self.copy_object(object)
    Marshal.load(Marshal.dump(object))
  end


2, faye如何查看定义日志级别
faye开发的时候,需要查看faye的日志,通过看它的源文件,我们可以定义faye的日志级别

https://github.com/faye/faye/blob/master/lib/faye/mixins/logging.rb

    LOG_LEVELS = {
      :error => 3,
      :warn => 2,
      :info => 1,
      :debug => 0
    }

在faye.ru中,如下定义
Faye::Loggin.log_level = :info



3, 如何使用lambda定义可执行块
resume = lambda do
      calls += 1
      loop.call
    end
resume.call


4, 判断一个字符串是否是utf-8编码
# http://www.w3.org/International/questions/qa-forms-utf-8.en.php
UTF8_MATCH = /^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/


def self.valid_utf8?(byte_array)
    UTF8_MATCH =~ byte_array.pack('C*') ? true : false

end


5,在日志记录中,使用? 问号替换成对应的字符串

 
 
  message = message_args . shift . gsub ( /\?/ ) do
         Faye . to_json ( message_args . shift )
       end

参考实例:
message = "hello, ? world, that is ?".gsub(/\?/).each do |x|
    “nice”
end

6,  如何取得一个对象的名称【string】
banner=" [#{level.to_s.upcase}] [#{self.class.name}] "如:
module A
class B
puts "bbbbbbbbbbbbbbb"
end
end

b = A::B.new
b.class.name => # "A::B"


7, 如何动态定义方法?

 
 
LOG_LEVELS . each do | level , value |
       define_method ( level ) { |* args | log ( args , level ) }
     end

define_method(方法名) {|方法参数|   方法定义主体   }  ====》
方法名(方法参数)  do 
方法主体
end


8, 如何取得一个字符串中,你所需要的字符串
string.match(/reg/)[0]
或者使用string.gsub(/reg/,"").downcase


9, 如何将一个字符串转换成一个类名
"video".camelize.singularize.constantize
"user".capitalize.constantize

10, 如何在一个数组和Hash中,选择Hash?
[app, options].grep(Hash).first

11, faye中有一个随机的128位的字符串生成函数,用于生成随机的字符串。具体代码参考如下

  def random(bitlength = ID_LENGTH)
    limit = 2 ** bitlength - 1
    max_size = limit.to_s(36).size
    string = rand(limit).to_s(36)
    string = '0' + string while string.size < max_size
    string
  end

ID_LENGTH = 128
地址: https://github.com/chucai/faye/blob/master/lib/faye/engines/proxy.rb


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值