Kanasan.JS prototype.js CodeReading#6

Posted by okkez Mon, 13 Oct 2008 14:05:00 GMT

行ってきました。

午前中は、通院のため行けなかったので午後から参加。

前回と違ってサイ本を読破していたのでそこそこちゃんと読めた。 以前の部分も復習しておかないとぁ。

1.6.0.2 が終わってからは差分を見ながら変更点の確認。

CHANGELOG を見ながら追っかけてました。 そのときやってた方法は以下のような感じ。

  • 読んでる部分の特定のキーワードで CHANGELOG で検索。

その後途中から Yuya さんのアドバイスで読み方変更。

prototype.js は git 上では複数のファイルに分かれているので読んでいる部分に対応するファイルを 見つけてそのファイルのログを見る必要があります。 配布ファイルの差分が追加/変更の場合は git blame で追加/変更部分が blame でも表示されるので 該当するチェンジセットのコミット内容を git show します。

ほぼすべてこれで変更内容を把握することができました。 ただし、 blame は削除部分に関しては何も教えてくれないのでそこは工夫しないといけない。

Posted in | コメントはありません |

jQuery UI Tabs でハマった件

Posted by okkez Thu, 18 Sep 2008 09:25:00 GMT

動的にタブのセットを入れ子にしていくときにハマったので書いておく。

HTML の仕様的に考えれば当然なんだけど、入れ子になっている部分の要素の id が一切重複してはいけないようだ。 重複していると予想外の動作をする上に、証拠を残さずに DOM を変更してくれるので調査しづらい。

id が重複した瞬間に通知してくれるようなツールがあるといいのだけどそんな都合のいいものはないですよね。

Posted in | コメントはありません |

Hash#default_proc をあとでセットする方法

Posted by okkez Fri, 22 Aug 2008 03:48:00 GMT

Hash#default_proc= がなかったのであるハッシュにあとで default_proc をセットする方法を考えてみました。

以下のようにするとうまく行きます。

hash = {} # default_proc が無い。 hash.default_proc # => nil other_hash = Hash.new{|h, k| h[k] = [] }.merge(hash) other_hash.default_proc # => #

Posted in , | コメントはありません |

develock の制限がきついので

Posted by okkez Sun, 03 Aug 2008 15:46:00 GMT

ruby-mode での develock の桁数制限がきついので緩くしてみた。

;; ruby-mode で Develock の桁数変更 (plist-put develock-max-column-plist ‘ruby-mode 100)

うちの Let’s Note CF-Y4 で画面を縦に割ったときにちょうどいい感じになりました。

Posted in | コメントはありません |

RSpec で transaction のテスト

Posted by okkez Sun, 03 Aug 2008 15:36:00 GMT

Yuya さんのヒントをもとにしてこんな風にしてみました。

sqlite3? は spec_helper に定義した。ヘルパーメソッド。 SQLite3 だとトランザクションの入れ子が出来なかった(例外が発生する)のでこうしてます。

一応 shouldnotreceive で特定の処理から先には進んでないことは確認しているし、 エラーメッセージも確認しているのでこれでテストとしては良さそう。

あとは、実装コードの最初の方で呼んでる処理をモック化すればいいと思う。

これをモック化すると、通しのテストはどうすればいいのだろう、というのが今の疑問。

describe BatchController do describe "POST create" do describe "by login user" do describe "when posted data was invalid (subject)" do before do Question.should_not_receive(:create!) Choice.should_not_receive(:create!) unless sqlite3? ActiveRecord::Base.connection.should_receive(:rollback_db_transaction) end end before do login_as :quentin post :create, :batch => { :body => INVALID_DATA_WITHOUT_TITLE } end it "should have error message" do flash[:error].should == invalid data. end it "should redirect to ‘subject/index’" do response.should redirect_to(subjects_path) end end end end end

Posted in , | コメントはありません |

アンケートのデータ修正しました

Posted by okkez Fri, 01 Aug 2008 03:46:00 GMT

http://q.okkez.net/ の第 28 回 Ruby/Rails 勉強会のアンケートで選択肢が英語になっていたデータを修正しました。

簡単なスクリプトを書いて script/console にコピペして実行した。 ちょっと複雑な修正なら SQL 書くより早いしわかりやすいね。

一部のデータがおかしくなってしまったのは SQL 書いて修正しましたけど。。。

多分、原因は私が使ってる Iceweasel に日本語言語パックをインストールしていなかったためだと思います。 次に同じようなミスがあった場合はすぐに修正できそうです。 r

Posted in , | コメントはありません |

Rack 使ってみた

Posted by okkez Wed, 30 Jul 2008 14:37:00 GMT

諸事情で web アプリを Rails を不使用で書く必要があったので cgi.rb の代わりに Rack を使ってみた。

主に上記を参考にして書いた。

ソースコードは整理して色々名前とか変えたら公開できるかもしれない。

感想

意外と短い行数で書けてびっくりした。 Rails の劣化版くらいなら一日くらいででっちあげられそうな感じ。

Posted in , | コメントはありません |

prototype.js code reading #5

Posted by okkez Sun, 15 Jun 2008 13:00:00 GMT

行ってきた。

javascript のメタプログラミングが段々分かってきた気がする。

だけど、自分でまったくコードを書いてないので、気がするだけなんだろうな。

ぼちぼち、自分のペースで勉強していきたい。

Posted in | コメントはありません |

Ruby1.8.7 で Ruby on Rails が

Posted by okkez Fri, 06 Jun 2008 12:36:00 GMT

動かない。

Ruby1.8.7/Rails2.0.2 で動かない。

[ruby-dev:34939] で解決したと思ったけど、やっぱり動かない部分がある。

ActiveScaffold で動的に作成した Controller が動かない。ちゃんと調べてないけど どうやら色々なものが Enumerable::Enumerator を返すようになったのが問題らしい。

ActiveScaffold にパッチあてるしかないのかな。

Posted in , | コメントはありません |

RSpec で rollback のテストを行う方法

Posted by okkez Thu, 05 Jun 2008 15:36:00 GMT

色々と調べたり試したりした結果、以下の方法で妥協することにした。

RAILS_ROOT/spec/spec_helper.rb をコピーして RAILS_ROOT/spec/rollback_spec_helper.rb を作成して、 use_transactional_fixtures = false にする。

これで、ファイルごとに実行するテストはうまくいくようになる。

この方法は簡単なんだけど、 rake spec や rake spec:rcov でテストを実行すると rollback 関連のテストが必ず失敗する。

もっとうまい方法はないのだろうか。

Posted in , | 2 comments |

Older posts: 1 2 3