2012年8月24日金曜日

TextMate2の新しいタブを開くショートカットを変更した

TextMate2のNew Tabが 「option + command + N」 で左手が辛いので
以上
2012年8月20日月曜日

Rails3でクエリパラメータでルーティング(Advanced Constraints)

少し前にsendagaya.rbで発表したRails3のAdvanced Constraintsをここでも紹介。

routes.rbの中でURLを定義する時にsubdomainとかを条件に含めるときに使うのがconstraintsというオプションなんですが、これを使ってURLの「?」以降を条件にしたりもできます。

方法はrequestオブジェクトを受け付けるmatches?というメソッドを実装したクラスを定義してインスタンスをconstraintsに渡してあげるだけです。

ここではpostというリソースの集合であるindex、つまり /posts というURLにGETで ?q=hoge 等のパラメータが付いている時に posts_controller#search というアクションに紐付けるということを行なっています。

ただしこのままだと q に対するvalueが空の状態 /posts?q でもsearchアクションに処理が渡るので、コントローラ側で何かしらの対応が必要です。

基本的にはrequestオブジェクトを使って判別できるならどんな条件でもいいので、Accept-languageで振り分けるとかIPアドレスでブラックリストを作るとかもできてしまいます。

今回はindexアクションの中でifで分岐させておくことでも十分対応可能ですが、render以外はほとんど共通処理がないよとかになると、アクションそのものを分けてしまったほうが綺麗なコードになりそうですよね。

2012年8月14日火曜日

オープンソースになったTextMate2をbuildしてみた

すっかりVimに慣れてしまった今日この頃ですが、お世話になったTextMateの2がオープンソースになったのでbuildしてみました。ちなみに環境は OS X lion 10.7.4です。

  1. Githubへ行ってみる

    https://github.com/textmate/textmate.git

    READMEにbuild方法は書かれていますね。

  2. 必要なライブラリをインストール

    とりあえず brew install ragel boost multimarkdown hg ninja とやってみたのですが ninja なんてないよって怒られちゃいました

    というわけで先に brew update してから再度実行したらちゃんと入りました

  3. リポジトリをclone

    git clone https://github.com/textmate/textmate.git でホームディレクトリにcloneしました

    textmate というフォルダができているはずなのでそこに移動 cd textmate

  4. build実行

    の前に、READMEをみると git submodule update --init とやってねと書いてあるので実行

    そして ./configure && ninja 実行!したら clang が古いと言われてしまいました

    brew install --HEAD llvm --with-clang で入るはずなんですが、Error: can't convert nil into String とか言われる

    brew update も brew doctor も問題ないんだよなぁ

    Githubのbug-fixing-checklistを見るとXCodeのupdateして見た方が良さそうだなと思ったので Apple からCommando line tools for XCodeの割と最近のやつをDLした

    でやり直しても駄目だなぁ。とよく見てみたらXCode 4.4+と書いてある、手元のXCodeは4.3でした。App Storeから入れ直そう。

  5. XCodeをupdateしたので

    気を取り直して ./configure && ninja を再度実行してみた。そしたら今度は pgrep が無いよと言われた

    brew install pgrep を実行。(そろそろめんどくさくなってきた)

    ./configure && ninja よし。こんどこそうまく行ってそう。(なにやらwarningとかdepricatedが出てきてますが)

  6. build成功した

    やっと成功した。

    へー2からはPreferencesでbundleとかthemeを追加できるようになってるんですね。逆に言うと最初は何も入ってないからハイライトも何も無いのだけど。

    めでたし

2012年8月8日水曜日

bashでgitの現在のbranch名を表示させる

git-completionというシェルスクリプトを使えばできるということを知ったのでやってみた。

  1. gitのバージョンを調べる

    $ git --version
    $ 1.7.7.5
    
  2. github(http://github.com/gitster/git)に行きcodeのtreeを同じバージョンに切り替える(ブランチの切り替え部分と同じところです)

  3. git-completion.bashまでtreeをたどりraw表示に切り替えて保存
    自分はhttps://raw.github.com/gitster/git/v1.7.7.5/contrib/completion/git-completion.bashでした

  4. DLしたファイルに使い方は大体書いてあるのでその通りにやれば動くと思います

    $ cd ~
    $ mv git-completion.bash .git-completion.sh
    $ vim .bashrc (or .bash_profile)
    $ PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' を追記
    $ source .bashrc
    
  5. こんなかんじで表示されました

    [kozo@kozo-mp current_dir (master)]$