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,どのように1つのオブジェクトの名前【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