83's

Top > Archives > 2007 > May

May 02, 2007

vimスクリプトの自動更新 04:41

GetLatestVimScriptsが便利そう。 vim7には標準で付いてきてるみたい。

vimのexモードで

GetLatestVimScripts

または

GLVS

とやると、インストールしてあるスクリプトのうち GetLatestVimScriptsに対応しているやつの最新版を http://vim.sourceforge.net/から ダウンロードして更新してくれる。

らしいんだけど、ちょっとはまったので作業メモを残しておきます。

各vimスクリプトのバージョンを~/.vim/GetLatest/GetLatestVimScripts.datに保持する ことになるんだけど、自動で作ってくれなかったので

% mkdir ~/.vim/GetLatest
% cat > ~/.vim/GetLatest/GetLatestVimScripts.dat
ScriptID SourceID Filename
--------------------------

とした。-------の行が大事。

あとはGLVSすればいいんだけど、zipで配布されているrails.vimが更新されないと思ったら オレの/usr/share/vim/vim70/plugin/getscript.vim (vesrion 20)の269行目が

exe "silent !unzip -o".fname

となっていた。-oの後には空白が必要だろうから

exe "silent !unzip -o ".fname

に変更。vimを起動し直してGLVSしたら新しくなった。

で、version 20はvimballには対応してない気がするのでversion 23にしたら、 rails.vimの扱いがなんかおかしい(今ここ)。うーん。

パッチを送ってみた 23:38

GetLatestVimScriptsのバージョン23がなんかおかしい気がしたので 今朝のとあわせてパッチを送ってみた。

英語のメール書くのに時間がかかりまくった。

なんかこの人vimballとかいろいろ作っててすごい人っぽい。余計に緊張するぜ。 数時間適当にいじっただけなのにパッチなんか送りつけて良かったんだろうか…… しかもvimスクリプト全然わからないよ。 (((( ;゚Д゚)))ガクガクブルブル

オレが間違ってるだけとか言う恥ずかしい結果になりませんように……。

May 06, 2007

vimからRSpec on Rails 03:28

少しずつRSpec on Railsに移行していこうとしてるんだけど、 Test::Unitと違ってrails.vimのサポートがなくて簡単に走らせることができないので moroさんのRSpec用のマクロをベースに ごにょごにょ。

function! Rspec ()
  let rails_spec_pat = '\<spec/\(models\|controllers\|views\|helpers\)/.*_spec\.rb$'
  if expand('%:p') =~ rails_spec_pat
    exe '!rake spec SPEC="'.expand('%:p').'" RSPECOPTS="-fs -c -l '.line('.').'"'
  else
    :!spec -fs -c %
  endif
endfunction

au BufRead,BufNewFile *_spec.rb :command! Rspec :call Rspec()

*_spec.rb開いて:Rspecで実行できる。

違いは

  • rake specを使う
  • 現在のカーソルの行を--lineオプションに使う

--lineオプションのおかげで、実行したいit(specify)の中にカーソル持ってくれば そこだけ実行してくれる。 itの外だとそこのdescribe(context)を実行……するといいんだけど、 カーソルとdescribe行の間にitがある場合、カーソルに1番近い itのみが実行される。まあこれはRSpecの仕様、ということで。

--exampleオプションを使えたら一番いいけど、vimスクリプト書かないとどうしようもないので ひとまずこれでガマン。

それから、spec/spec.optsからオプション読めたらいいんだけど、これもオレには無理。 とりあえず今はRSPECOPTSに書き込む。

一息ついたらvimスクリプト勉強しようと思う。 rails.vimの人がなんとかしてくれたらそれが一番最高ですが。

まだRSpec全然触れてないんだけど、個人的な感想としては describe/itの2段階で括れることと、それらの引数のところで説明が書けるのが好きだな、 コメントより目立つし。 あとTest::Unitのtest_xxxみたいに妙な英語を書く必要もないし……。

shouldなんとかはどうでもいいというか、むしろ慣れるまでキモいんだけど。 あ、Test::Unitではtest_helper.rbに繰り出せば良かったメソッドって、 RSpecではどこにどう書いたらいいんだろう……。

そういえば知らないうちにcontext/specifyからdescribe/itになったみたいだけど、 日本語の場合はちょっと微妙だな……。itなんて動詞ですらない。

May 12, 2007

rake remote:disable_webのhtmlのテンプレート 22:20

rake remote:disable_web

すると/system/maintenance.htmlを作ってくれるけど、 このページのテンプレートとかどうなってんのか知らなくて今まで使ってなかった。

カレントディレクトリにmaintenance.rhtmlがある場合はそっちを使ってくれる。 ない場合は`gem env gempath`/gems/capistrano-x.x.x/lib/capistrano/recipes/templates/maintenance.rhtml。

maintenance.rhtml内ではreasonとdeadlineという変数が使えて、

rake remote:disable_web REASON=理由 UNTIL=期日

とすればそれぞれに代入されるみたい。これは便利。

May 13, 2007

mltermでscimの親指シフトが 06:40

うまく動かない。

最近Ubuntu 7.04 + gnome-terminal + vim + scimで日本語打ってるとgnome-terminalが落ちるからmltermにしてる。 mlterm-im-scim入れるとscimが使えるようになるんだけど親指シフトがまともに動かない。 一応文字は出るけど、使えたもんじゃない。

どこにタレこんだらいいのかわかんないからとりあえず声だけでもあげておこうかと。 絶滅危惧種(親指シフター)を守れ!ヽ(`Д´)ノ

今のところmltermのときだけuimにしてローマ字入力で日本語を書いてる。 まあ長い文は打たないからそれほどストレスでもないけど気分は少し悪い。

May 14, 2007

vim 7.1 18:55

ベータがとれたのデターーーー!

バグフィックスとランタイムファイルのアップデートが中心で、 驚くような特徴はない、とのこと。らんたいむふぁいる?

そう言えばGetLatestVimScriptsは間に合ったのかな……。間に合ったみたい。

飯食ったら入れてみよう。

May 19, 2007

Rubyクックブック 18:37

読んだ。

こういうときはこれ、てのが簡単に説明されてて良いと思う。 とっかかりを与えてくれるというか。できることがひろがりんぐ。

Rubyクックブック ―エキスパートのための応用レシピ集
Lucas Carlson Leonard Richardson 株式会社クイープ
オライリー・ジャパン (2007/04/27)
売り上げランキング: 30473

さて、On Lispに戻るか……。

「あとで読む」ページをLDRのピンに追加 20:48

「あとで読む」タグをつけてブックマークしても読まない確率が高すぎるので、 ブックマークじゃなくてlivedoor Readerのピンのところに追加したいなぁと思って greasemonkey作ってたんだけど、ApiKey(POSTのパラメータ)はどうやって取得するかなー、 cookieにあるreader_sidがApiKeyだなーというところまできて、 うまい方法はないかとググってみたらすでに作ってる人がいました。

みんなで仲良くʕ◕ω◕ʔ ℳℴℯ✩ - ふるごむのにこにこうんこ日記 - めもに greasemonkeyスクリプトがあります。感謝感謝。

「ツール」→「Greasemonkey」→「ユーザスクリプトコマンド」→「あとで読む」で LDRのピンに追加。ピンに追加って変な日本語だな、自分で言っててなんだけれども。

「あとで読む」をクリックしても反応がないと不安になるのでちょっと追加。

-      onload: function(res) { challenged = 0 },
+      onload: function(res) { challenged = 0; alert(res.status == 200 ? 'added' : 'error occurred: ' + res.status); },

これではてブしにくい変なページも気兼ねなく「あとで読む」にできますねw

May 20, 2007

指定したnamespace以下のタスクを全部実行 17:58

ほのぼのRake。

namespace :a do
  desc "a:b"
  task :b do
    puts "a:b"
  end

  desc "a:c"
  task :c do
    puts "a:c"
  end

  namespace :d do
    desc "a:d:e"
    task :e do
      puts "a:d:e"
    end

    desc "a:d:f"
    task :f do
      puts "a:d:f"
    end
  end
end

task :a => [ "a:b", "a:c", "a:d:e", "a:d:f" ]
task "a:d" => [ "a:d:e", "a:d:f" ]

新しいtask書くたびに最後のタスクまとめてるやつに追加していくのが めんどくさくなってきたのでnamespace指定して一括実行。

# 以下を追記

def invoke_all(*namespace)
  task_name = namespace.map {|n| n.to_s }.join(':')
  desc "invoke all #{task_name}"
  task task_name => Rake::Task.tasks.select {|t| t.scope[0, namespace.size] == namespace }.map {|t| t.name }
end

invoke_all :a
invoke_all :a, :d  # ネストしてるやつはこう書く
yazu@flora % rake -T
(in /home/yazu)
rake a      # invoke all a
rake a:b    # a:b
rake a:c    # a:c
rake a:d    # invoke all a:d
rake a:d:e  # a:d:e
rake a:d:f  # a:d:f
yazu@flora % rake a
(in /home/yazu)
a:b
a:c
a:d:e
a:d:f
yazu@flora % rake a:d
(in /home/yazu)
a:d:e
a:d:f

(゚д゚)ウマー

May 23, 2007

Fixture referencesでfixtureの外部キーをわかりやすく 01:07

Fixture referencesてのをさっき知ったが、 これはナイスな予感。

参照先のページのは古くなってて、今は次のような使い方になってる。

<%
fixtures :employees
id = 0
%>

packaging:
  id: <%= id += 1 %>
  name: Packaging
  manager_id: <%= employees(:bob) %>
  
quality_assurance:
  id: <%= id += 1 %>
  name: Quality Assurance
  manager_id: <%= employees(:joe) %>
  
marketing:
  id: <%= id += 1 %>
  name: Marketing
  manager_id: <%= employees(:jane) %>

manager_idが何指してるかわかりやすくなった。

employees(:bob)はemployees.ymlのbobのidを返す。 他のフィールドを返したければemployees(:bob, :name)。おおう。

May 25, 2007

Railsでhtml以外のキャッシュ 00:45

ガーン。

今まで画像のキャッシュは

ApplicationController.cache_page jpeg_content, 'path/to/file.jpg'
ApplicationController.expire_page 'path/to/file.jpg'

で作ったり消したりしてたけど、下のが通るじゃないか(手元の環境はRails 1.2.3)。

map.connect '/:user/:year/:month/:day.jpg', ...

前これダメだったような気がしたんだけどなー、いつからだろ。 てことは

class FooController < ApplicationController
  caches_page :bar

これだけで拡張子jpgの画像のキャッシュができるじゃないか。

これでキャッシュへのアクセスのためにURLのrewrite書く必要もないのかー。 そして最近lighttpd + mongrelにして、 Luaでしこしこキャッシュ判定書いたオレの労力が少し無駄に…… あーでも今更URL変更も良くなさそうだから現行のままにするか。

May 30, 2007

はてブのタグ除外グリモンのバグ修正 19:23

はてブでタグを除外して絞りこむgreasemonkeyに、 「related」のインクリメンタルサーチが効かなくなるバグがあったので直しました。

タグ名の前に「+」とか「-」とか追加してたけど、これだとまずい。 てことでタグ名の後ろに追加するようにした。