2012-05-01から1ヶ月間の記事一覧
なんとなーく クラスマクロを理解したので、その代表格であるattr_accessor を自分で実装してみた。 1 class MyClass 2 p self # -> MyClass 3 def self.my_accessor name 4 p self #-> MyClass 5 define_method "#{name}=" do |v| 6 p self #-> # 7 @name =…
にしても難解なRuby。これを理解するのに本を何度も読み直さないとわからない。 自分なりのメモなので間違っているかもしれませんがその時は指摘してくれるとうれしいです。instance_eval obj.instance_eval do #そのオブジェクトのクラス定義のコンテキスト…
なんかの処理をまとめるとき、通常はdef を使いますね。 ですがdef はdefの外側にある変数を読み込めません。(スコープ) なのでlambda を使ってオブジェクト上のコンテキストで読み込めるようにするのです。 1 b = 1 2 def add a 3 puts a + b 4 end 5 6 a…
メタプログラミングRubyでフラットスコープについて学んだ。 でもこれから一つの疑問が生じた。 1 my_var = 1 2 puts "myvar:#{my_var} was called at the top level" 3 4 MyClass = Class.new do 5 my_var += 1 6 puts "myvar:#{my_var} was called at the …
引き続き前回の続き。。前回のと同様に method_missing を実現するとどうなるだろう? 45 class Hoge3 46 def method_missing(name, *args) 47 if name =~ /hoge/ 48 p "#{name} was called..." 49 p "Whohooo!" 50 else 51 super 52 end 53 end 54 end 55 5…
前回の続き。 今回は重複するクラスの中のメソッドをリファクタリングしてみよう。 こんなクラスがあったとする。 1 class Hoge 2 def hoge1 3 p "hoge1 was called..." 4 p "Whohooo!" 5 end 6 7 def hoge2 8 p "hoge2 was called..." 9 p "Whohooo!" 10 en…
今日は基礎に戻ってRubyの学習。動的ディスパッチに関してメモ。動的ディスパッチ実行時に呼ぶメソッドを柔軟に変えたいときとかに send() を使う。 これが中々面白いのでいろいろ実験してた。 Test:Unitとか基本的にはメソッド名の先頭にtest_ をつけている…
毎回同じDBアクセスの場合キャッシュしたくなりますよね。 今日はちょっと感動したコードを紹介。 Rails高速化にはこういうテクニックが必要ですなぁ。 class Area ActiveRecord::Base @@cache = nil class def find_default_area() unless @@cache @@cache …
こんな文字列をパースしようとしたんだ。 DateTime.parse("02/02/1989") -> うまくいく DateTime.parse("02/12/1989") -> Errorなぜか月や日付が10日移行だとエラーになる。。。 なんでやねん!ってことで仕方なく "1989-02-12" みたいな文字列に変換させて…
FB認証のパーミッションで最近メアドも追加された模様。 スパムが多いからなんだろうねえ http://developers.facebook.com/docs/authentication/permissions/前まで普通に登録できたのに、最近なんでできないんだろ?と思って調べたらこれが原因でした。
環境に応じて、javascript_include_tag に :debug => true をつけたりつけなかったりする必要があって大変だったので、以下のようにしました。app/view/layout/application.html.erb 13 Rails.env == "production" %> 14 "all" %> 15 javascript_include_tag…
いやーやっと解決できました。 jQuery Mobile をRails3.2で使っていると、Ajaxでページ遷移しちゃってアセットパイプラインで繋がった各css.scss が適用できなくてとても困っていました。前はこんな感じでやってた: "> ,,,, すると jQuery Mobile はページ…
なぜか開発環境でも rake assets:precompile しないとJS、CSSが反映されなかった件について。原因は前開発環境で作ってしまったpublic/assets の中身が残り続けてしまって、それを application.js で読み込んでしまっていたからでした。アセットパイプライン…