ゲーム日記

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

今日の日記は珍しく技術日記です。

巷ではRuby on Railsが流行って?います。

で、私もトライしているわけですが、その開発環境は、周りから変人呼ばわりされている「vi」です。正確にはvim。今の開発には非力だといわれていますが、vimには「Rails.vim」というRuby on Railsプログラミングをサポートする機能満載なスクリプトが存在します。



こちらがrails.vimのダウンロード先

http://www.vim.org/scripts/script.php?script_id=1567

ダウンロードしたらpluginディレクトリに突っ込むだけ。vimユーザであればすぐ使えます。

何が便利かというと、コントローラとビューの表示切替とか、サーバの起動とか、Rakeだとか、そういった機能をずっとviを開いたまま作業ができるのがとっても良いのです。


機能に関しての詳細は以下を参照してください。
http://fg-180.katamayu.net/archives/2006/09/02/125150


で、こんな便利なRails.vimなんですが、1つ不満点が・・・
コントローラ内のメソッドで「:R」を実行すると、ビューに表示ファイルが遷移しますが、ビューのファイルが存在しないと表示してくれません。

当たり前だって?

まー、当たり前なんですが、私の希望は、ビューが存在しない場合、それを新規作成してほしいのです。

でも、機能がない。。。

でも、ほしい。

ということで、Rails.vimスクリプトをちょいと覗き見。。。


4600行超・・・うはー

はじめてみるスクリプト言語に目眩が・・・

で、まー、結果からいくと、不満はありつつも完成しました。
完成したので、メモ書きを残しておきます。

以下の変更後、コントローラで適当にメソッドを作って、「:RA」してみてください。ファイルが存在しない場合、新規作成してくれます。

command! -buffer -bar -nargs=0 AN :call s:Related(0,"")
command! -buffer -bar -nargs=0 R :call s:Related(0,"")
command! -buffer -bar -nargs=0 RE :call s:Related(0,"E")
command! -buffer -bar -nargs=0 RS :call s:Related(0,"S")
command! -buffer -bar -nargs=0 RV :call s:Related(0,"V")
command! -buffer -bar -nargs=0 RT :call s:Related(0,"T")
command! -buffer -bar -nargs=0 RA :call s:Related_strong(0,"") ←追加しました



追加に対応したメソッドは以下。Related関数をコピーしてちょいといじりました。

function! s:Related_strong(bang,cmd)
let cmd = a:cmd.(a:bang?"!":"")
let file = s:RelatedFile()
if file != ""
call s:findedit_strong(cmd,file)
else
call s:warn("No related file is defined")
endif
endfunction



Related_strong関数で呼んでいるfindedit_strong関数もfindedit関数をコピーしてちょっと変更。

function! s:findedit_strong(cmd,file,...) abort
let cmd = s:findcmdfor(a:cmd)
if a:file =~ '\n'
let filelist = a:file . "\n"
let file = ''
while file == '' && filelist != ''
let maybe = matchstr(filelist,'^.\{-\}\ze\n')
let filelist = s:sub(filelist,'^.\{-\}\n','')
if s:hasfile(s:sub(maybe,'[@#].*',''))
let file = maybe
endif
endwhile
if file == ''
let file = matchstr(a:file."\n",'^.\{-\}\ze\n')
endif
else
let file = a:file
endif
if file =~ '[@#]'
let djump = matchstr(file,'[@#]\zs.*')
let file = matchstr(file,'.\{-\}\ze[@#]')
else
let djump = ''
endif
if file == ''
let testcmd = "edit"
elseif RailsRoot() =~ '://' || cmd =~ 'edit' || cmd =~ 'split'
if file !~ '^/' && file !~ '^\w:' && file !~ '://'
let file = s:ra().'/'.file
endif
let testcmd = s:editcmdfor(cmd).' '.(a:0 ? a:1 . ' ' : '').file
elseif isdirectory(RailsRoot().'/'.file)
let testcmd = s:editcmdfor(cmd).' '.(a:0 ? a:1 . ' ' : '').s:ra().'/'.file
exe testcmd
return
else
let testcmd = cmd.' '.(a:0 ? a:1 . ' ' : '').file
endif
" if s:try(testcmd)
" Shorten the file name (I don't fully understand how Vim decides when to
" use a relative/absolute path for the file name, so lets blindly force it
" to be as short as possible)
"silent! file %:~:.
"silent! lcd .
" call s:djump(djump)
" endif
let testcmd = "edit".' '.(a:0 ? a:1 . ' ' : '').file.'.rhtml'
if s:try(testcmd)
call s:djump(djump)
endif

endfunction



テーマ:プログラミング - ジャンル:コンピュータ





Ruby・・・身の回りにはいないなぁ
【2007/09/05 19:23】 URL | faye #-[ 編集]
vi 使いを変人扱いって・・・おかしくね?
IDEじゃないとダメってことっすかね?
【2007/09/06 09:23】 URL | overblue #-[ 編集]
viは基本中の基本だべ。時代が移り変わったのかもしれんが・・・お客様のところに行くと、viしかないってこともしばしば。viを知ってから他のツールの機能のありがたさを知って欲しいのー。
【2007/09/06 09:35】 URL | Raoh #-[ 編集]
うむうむ。
そして、Raohよ。

他のツールを使って、さらにviのありがたみを知るのが真の「v愛ユーザ」だ!(笑
【2007/09/06 10:32】 URL | Jelid #-[ 編集]
びっくりしました。
2、3日前に僕がであったもどかしさに、ほぼ同じときに出会ってますね!

僕は4600行にびびって、ビューファイルを:!touchしてました(笑
非常に参考になるエントリーありがとうございます。
今度使わせていただきます。
【2007/09/08 01:28】 URL | sztm #n953mqEs[ 編集]
使ってもらえる人に出会えるとうれしいです。ただ、危険なことに、:RAは強制的にカーソルの存在するメソッド名.rhtmlを生成してしまいます。コントローラ以外で使うとえらい事になってしまうので注意が必要です。
【2007/09/08 20:13】 URL | Jelid #-[ 編集]















管理者にだけ表示を許可する




| HOME |

Design by mi104c.
Copyright © 2017 (´・ω・`)ショボーンとしてみる, All rights reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。