Gitでは、SVNなどと違ってリビジョン番号のような順序付きの数字ではなく、 ハッシュのような識別子でコミットが管理されています。 なので、時系列にそってコミットIDを列挙したい場合は、 以下のように git rev-list コマンドを使えば良いようです。

   1  % git rev-list 2dfb3...(snip)...cf210

これで、指定したコミットより過去(指定したコミットを含む)のハッシュが時系列にそって得られます。 先頭は一番新しいもので、末尾が一番古いものです。

   1  % git rev-list HEAD

とすると、全てのコミットのハッシュを時系列にそって取得出来ます。

posted by Png genki on Fri 28 Nov 2008 at 19:57

MacOSXのTerminal.appで、選択をした時に、 自動的に選択した文字列をコピーするSIMBLプラグイン TerminalCopyOnSelect を作ってみました。

TerminalCopyOnSelect.bundle.zip

インストール方法

  1. まずはSIMBL をインストールします
  2. 上述のTerminalCopyOnSelect.bundle.zipファイルをダウンロードして展開します
  3. 展開されたTerminalCopyOnSelect.bundleを、 ~/Library/Application Support/SIMBL/Plugins/の下にコピーします。 ディレクトリが無い場合は作成してください。
  4. Terminal.appのプロセスを終了し、Terminal.appをもう一度起動します

これでOKです。 一時的にこの機能をオフにする場合は、 以下のようにメニューから「Copy On Select」をオフにしてください。

ss01

オンに戻せば再び有効化されます。

追記

ソースコードをGitHubで公開しました。

MITライセンスという事でお願いします。

posted by Png genki on Tue 25 Nov 2008 at 17:56 with 4 comments

Merbのsliceは、独立したMerbのサブシステムを再利用する仕組みです。 はじめ、Railsのcomponentのようなものだと思っていたのですが、 どちらかというとEnginesのような機能を持っているようです。

Merbのsliceは、Gemで管理されているので、sliceを利用する場合は、 sliceのGemをインストールします。 例えば、 merb-auth-activation-slice を利用したい場合、 今の所Gemが配布されていないので、githubからソースを持ってきて、 以下のようにインストールします。

   1  % git clone git://github.com/ck/merb-auth-slice-activation.git 
   2  % cd merb-auth-slice-activation
   3  % sudo rake install

そうすると、以下のようにGemがbuildされてインストールされます。

   1  % gem list merb-auth-slice-activation
   2  
   3  *** LOCAL GEMS ***
   4  
   5  merb-auth-slice-activation (1.0)

この状態で、config/dependencies.rbファイルに依存関係を登録します。

config/dependencies.rb

   1  dependency "merb-auth-slice-activation"

続いて、sliceをアプリケーションにインストールするRake タスクを実行します。

   1  % rake slices:merb_auth_slice_activation:install

Sliceに関連するRubyコードがMERB_ROOT/slices以下に、 Assetsファイルが、 public/slices/merb-auth-slice-activation以下に展開されます。

あとは、config/router.rbやconfig/init.rb、config/environments/*.rb などの中で、適宜slice関連の設定を行います。

posted by Png genki on Tue 25 Nov 2008 at 04:19

DHHの Tweet によるとRails-2.2.2がリリースされた模様です。

   1  % gem search -r rails
   2  (snip)
   3  rails (2.2.2)
   4  (snip)

Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs

Rails 2.2 is finally done after we cleared the last issues from the release candidate program. This release contains an long list of fixes, improvements, and additions that’ll make everything Rails smoother and better, but we also have a number of star player features to parade this time.

posted by Png genki on Sat 22 Nov 2008 at 04:59

自分用メモをかねて。

debianを使ってる時は、

   1  % netstat -l -n -p | grep 4000

のような感じで調べていたのですが、MacOSXだとnetstatの挙動が微妙に違うようで、うまく調べられなくて困っていた所、shachiさんから教えてもらった方法を紹介します。

   1  % lsof -i :4000

こんな感じにlsofコマンドを使うと、ポート4000をListenしているプロセスを調べる事ができます。

Update

もうちょっと詳しく知りたい場合は、

   1  % lsof -n -P -i :5000

こんな感じのオプションを追加すると良い感じです。

posted by Png genki on Sat 22 Nov 2008 at 02:56

Merb-1.0.1では、development環境でも、 通常状態ではファイルにログを出力しないようになっています。 これを出力させるようにするためには、config/environments/development.rb の中で以下のように設定する必要があります。

   1    c[:log_file]  = Merb.root / "log" / "development.log"

posted by Png genki on Fri 21 Nov 2008 at 19:20

簡単に言えば、Rails.vimのMerb版のような感じですね。

インストールするには、

   1  % git clone git://github.com/nono/merb.vim.git

でgithubからcloneしたあと、インストール用のrakeタスクを実行すればOKです。

   1  % rake install
   2  (in /Users/takiuchi/project/merb.vim)
   3  linking ~/.vim/after/ftplugin/eruby.vim
   4  linking ~/.vim/after/ftplugin/eruby_surround.vim
   5  linking ~/.vim/after/syntax/ruby.vim
   6  linking ~/.vim/ftdetect/merb.vim
   7  linking ~/.vim/ftplugin/datamapper.vim
   8  linking ~/.vim/ftplugin/datamapper_migration.vim
   9  linking ~/.vim/ftplugin/feature.vim
  10  linking ~/.vim/ftplugin/haml.vim
  11  linking ~/.vim/ftplugin/merb_controller.vim
  12  linking ~/.vim/syntax/datamapper.vim
  13  linking ~/.vim/syntax/datamapper_migration.vim
  14  linking ~/.vim/syntax/jquery.vim
  15  linking ~/.vim/syntax/merb_controller.vim
  16  linking ~/.vim/syntax/merb_mailer.vim
  17  linking ~/.vim/syntax/merb_router.vim
  18  linking ~/.vim/syntax/merb_view.vim

posted by Png genki on Fri 21 Nov 2008 at 19:04

merbでruby-debugを使ったデバッグをする方法を紹介します。

とは言ってもRailsの時と同様に非常に簡単で、ブレークポイントを仕込みたい場所に

   1    debugger

と書いて、--debuggerオプションを指定してmerbコマンドを実行するだけです。

   1  % merb --debugger

posted by Png genki on Fri 21 Nov 2008 at 17:00

MerbでDataMapperを使っている場合にアソシエイションを記述する場合、 以下のようにhasメソッドを利用します。

   1  class User
   2    include DataMapper::Resource
   3    
   4    property :id,     Serial
   5    property :login,  String
   6  
   7    has n, :assignments
   8    has n, :groups, :through => :assignments
   9  end

第一引数はカーディナリティを指定します。nは DataMapper::Associations#nで、値はInfinityです。 1, 2, 3などの数値や、1..3, 5..n などのRangeを指定する事もできます。

上の例のように、Railsのhas_many :throughのようなこともできます。

posted by Png genki on Fri 21 Nov 2008 at 16:55

Merbではlink_toなどのヘルパーでURLを指定する時に、 urlメソッドを利用しますが、 そこで利用するNamedRouteを定義するためには、 config/router.rbの中で以下のように記述します。

   1    match('/foo').to(:controller => 'foo').name(:foo)

これをViewの中から参照する場合は、

   1  <%= link_to 'Foo', url(:foo) %>

の様になります。

posted by Png genki on Fri 21 Nov 2008 at 12:18