A Day in the Life

2008-06-03

vim + git

vcscommand は使って無いので、git commit 時の EDITOR として vim がいい感じによしなにしてくれるのが個人的にうれしい。

の git.vim を ftplugin/git/git.vim に入れる(他の git の ftplugin を使うかもしれないので)。

~/.vimrc に以下を追加 ( http://d.hatena.ne.jp/cooldaemon/20080516/1210948783 より)

let git_diff_spawn_mode=1
autocmd BufNewFile,BufRead COMMIT_EDITMSG set filetype=git

最後に COMMIT_EDITMSG のハイライトのため motemen の

を syntax/git-status.vim に入れておくと

f:id:secondlife:20080603194252p:image

となる。

msysgit + ssh

pageant つかえたらなー。cygwin の ssh 経由だとめどーいしちょっとアレ(秘密鍵をコピるという意味で)

zipruby

バイナリの zip に対して、解凍処理したいだけなんだけど、zipruby は実ファイルが存在しないと処理が行えないぽいなぁ。

さっきの Tempfile#open_with_block と組み合わせて

Tempfile.open_with_block do |tmp|
  tmp.puts zip_binary
  tmp.close
  Zip::Archive.open(tmp.path) do |archives|
    #...
  end
end

かな。うーん。

Ruby の tempfile

  • new/open でブロック引数が取れない
  • テンポラリファイル名の引数を明示的に指定しなくてはならない

あたりが Ruby ぽくないなぁ、というわけで書いてみた。

Tempfile.open_with_block do |tmp|
  tmp.puts "foobar"
  tmp.close # いったんファイルに書き込む
  p tmp.read
end

みたいに使える。

require 'tempfile'

class Tempfile
  def self.open_with_block(name = nil, dir = nil)
    name ||= (0..8).map{rand(36).to_s(36)}.join
    args = dir ? [name, dir] : [name]
    tmp = Tempfile.open *args
    begin
      yield tmp
    ensure
      tmp.close true
    end
  end
end
記事の一覧 >