Ruby on Rails
現在Javaでは、DIのように疎結合ということがひとつのキーワードとして扱われている。これに対し、Ruby on Railsは密結合のウェブフレームワークだという。
http://journal.mycom.co.jp/articles/2005/08/29/lldn/001.html
密結合なフレームワーク。
テスト
テストデータベースにスキーマをコピー
$ rake db:test:prepare
テスト実行する
$ ruby test/unit/person_test.rb
テスト実行する
$ ruby test/unit/person_test.rb
特定のメソッドのみテスト実行する
$ ruby test/unit/person_test.rb -n test_set_name
fixturesを使う
class PersonTest < ActiveSupport::TestCase
def test_set_name
person = persons(:one)
end
end
fixturesはテンプレートの記法と同じく動的に生成できる。
privateとprotected
privateの意味は、メソッドを関数形式でだけ呼び出せるようにし、 レシーバー形式では呼び出せないようにするという意味です。
class Foo
def test
print "hello\n"
end
private :test
end
レシーバ?コンテキストのことかな?ようするにprivateは定義内でしか呼び出せないということか。
protectedにするとレシーバーを指定できる。これは同じクラスであれば外からでも呼び出しが可能になることを意味する。
Rubyでは、C++やJavaのprivateと異なり、サブクラスからでもスーパークラスのprivateメソッドを呼ぶことができる。
Rubyにおけるprotectedとprivateの違いは、レシーバが付けられるかどうかであり、サブクラスから呼べるかどうかではない。
privateメソッドにはレシーバを付けられないので、同じクラスの別のインスタンスのprivateメソッドは呼べない。このような場合にprotectedを使用する。
arrayかどうかチェックする
obj.instance_of?(Array)
obj.class == "Array"
レイジーロード
validation.rbにこんなのがあった
# Returns the Errors object that holds all information about attribute error messages.
def errors
@errors ||= Errors.new(self)
end
これはもしや、レイジーロードパターン?
irb(main):029:0> class Moge irb(main):030:1> @@moge = nil irb(main):031:1> def self.get irb(main):032:2> @@moge ||= Moge.new irb(main):033:2> end irb(main):034:1> end => nil irb(main):035:0> Moge.get() => #<Moge:0x1003a3418> irb(main):036:0> Moge.get() => #<Moge:0x1003a3418>
なるほど、いいね。
メモ
- MでもVでもCでもない、CakePHPでいうコンポーネント的なのはどこに定義すればいいだろう?
履歴
- 第 11 版akkun_choi2010-02-24 19:20:24
- 第 10 版akkun_choi2010-02-24 19:17:35
- 第 9 版akkun_choi2010-02-08 15:45:13
- 第 8 版akkun_choi2010-02-08 11:53:07
- 第 7 版akkun_choi2010-02-08 11:51:45
- 第 6 版akkun_choi2010-02-08 11:47:15
- 第 5 版akkun_choi2010-02-08 11:44:34
- 第 4 版akkun_choi2010-02-08 11:43:58
- 第 3 版akkun_choi2009-05-26 01:20:01
- 第 2 版akkun_choi2009-05-26 01:19:30
- 第 1 版akkun_choi2007-06-03 04:06:11
タグ
「Ruby on Rails」タグが付けられた単語
コメント
他の人の「Ruby on Rails」
- 2011-07-25
- !! (^ ..O ^ ) !! SHINYAの「Ruby on Rails」SHINYの気になる言葉>MでもVでもCでもない、CakePHPでいうコンポーネント的なのはどこに定義すればいいだろう? わたしはいつもapplication_controllerに書…2010-02-08
- kaniの「Ruby on Rails」カラカニのメモ帳生産性が高いらしい。と話を聞いた。 これからそれなりに触ってみる。 インストール 概略 四つほどソフトウェアをインストールする。このうち、RubyとGemはRu…2010-01-31
なるほど!
結合の度合いが言語の特性で変わるのは面白いですね。