1,如何深度复制一个对象?
def self.copy_object(object)
Marshal.load(Marshal.dump(object))
end
2, faye如何查看定义日志级别
faye开发的时候,需要查看faye的日志,通过看它的源文件,我们可以定义faye的日志级别
在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
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"
define_method(方法名) {|方法参数| 方法定义主体 } ====》
方法名(方法参数) do
方法主体
end
8, 如何取得一个字符串中,你所需要的字符串
string.match(/reg/)[0]
或者使用string.gsub(/reg/,"").downcase
ID_LENGTH = 128
地址: https://github.com/chucai/faye/blob/master/lib/faye/engines/proxy.rb
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 ( /\?/ ) doFaye . 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