ボクココ

個人開発に関するテックブログ

2012-05-01から1ヶ月間の記事一覧

オレオレ attr_accessor

なんとなーく クラスマクロを理解したので、その代表格である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 =…

instance_eval と class_eval

にしても難解な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 …

Ruby method_missing

引き続き前回の続き。。前回のと同様に 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…

Ruby 動的メソッド

前回の続き。 今回は重複するクラスの中のメソッドをリファクタリングしてみよう。 こんなクラスがあったとする。 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 動的ディスパッチ

今日は基礎に戻ってRubyの学習。動的ディスパッチに関してメモ。動的ディスパッチ実行時に呼ぶメソッドを柔軟に変えたいときとかに send() を使う。 これが中々面白いのでいろいろ実験してた。 Test:Unitとか基本的にはメソッド名の先頭にtest_ をつけている…

仕事で学んだイカしたRailsテクニック

毎回同じDBアクセスの場合キャッシュしたくなりますよね。 今日はちょっと感動したコードを紹介。 Rails高速化にはこういうテクニックが必要ですなぁ。 class Area ActiveRecord::Base @@cache = nil class def find_default_area() unless @@cache @@cache …

RailsでなぜかDateTimeでInvalid Argumentと出る件。

こんな文字列をパースしようとしたんだ。 DateTime.parse("02/02/1989") -> うまくいく DateTime.parse("02/12/1989") -> Errorなぜか月や日付が10日移行だとエラーになる。。。 なんでやねん!ってことで仕方なく "1989-02-12" みたいな文字列に変換させて…

最近Facebookのパーミッションでメアドも追加された模様。

FB認証のパーミッションで最近メアドも追加された模様。 スパムが多いからなんだろうねえ http://developers.facebook.com/docs/authentication/permissions/前まで普通に登録できたのに、最近なんでできないんだろ?と思って調べたらこれが原因でした。

Rails3.2 application.js, application.css の読み込み

環境に応じて、javascript_include_tag に :debug => true をつけたりつけなかったりする必要があって大変だったので、以下のようにしました。app/view/layout/application.html.erb 13 Rails.env == "production" %> 14 "all" %> 15 javascript_include_tag…

Rails 3.2 x jquery Mobile ページ毎のCSS適用

いやーやっと解決できました。 jQuery Mobile をRails3.2で使っていると、Ajaxでページ遷移しちゃってアセットパイプラインで繋がった各css.scss が適用できなくてとても困っていました。前はこんな感じでやってた: "> ,,,, すると jQuery Mobile はページ…

Rails 3.2 アセットパイプラインで開発環境でアセットが更新されない

なぜか開発環境でも rake assets:precompile しないとJS、CSSが反映されなかった件について。原因は前開発環境で作ってしまったpublic/assets の中身が残り続けてしまって、それを application.js で読み込んでしまっていたからでした。アセットパイプライン…