on Rails : rails.elの使い方をかいつまんでまとめる

http://rubyforge.org/docman/?group_id=1484

これの,review.zipの中のindex.htmlを読みながら.

コーディング

Snipets

C-c p

rhtml(ビュー)ファイルの編集中,範囲を選択してC-c pってすると,その選択した部分を切り取って新しくファイルを作ってくれる.pは,partialのpと覚えれば良い.んで,その切り取った部分の名前をつけられる._form.rhtmlみたいなサブテンプレートを作ってくれるんだな.
例)

  • before
<h1>新規スケジュール</h1>

<%= start_form_tag({:action => 'create'})%>
<!-- ここから -->
<%= error_messages_for 'schedule' %>

<p><label for="schedule_datetime">日付</label><br/>
<%= datetime_select('schedule', 'datetime', :use_month_numbers => true) %></p>

<p><label for="schedule_title">タイトル</label><br/>
<%= text_field('schedule', 'title') %></p>

<p><label for="schedule_content">内容</label><br/>
<%= text_area('schedule', 'content', {'cols' => 40, 'rows' => 10}) %></p>
<!-- ここまでを選択 -->
  <%= submit_tag "新規作成" %>
<%= end_form_tag %>

選択したら,C-c pすると,Partial name?と聞かれるので,そこに名前をformと入力すると・・・

  • after

元のファイルはこう(↓)なって,

<h1>新規スケジュール</h1>

<%= start_form_tag({:action => 'create'})%>
  <%= rendar :partial => "form" %>
  <%= submit_tag "新規作成" %>
<%= end_form_tag %>

_form.rhtmlが選択範囲を元に作成される.DRYを徹底したい物好きにはたまらない.

ナビゲーション

Gotoメニュー

C-c g K

C-c g Kと押すと,Gotoメニューを開く.Kは,以下のうちのどれかを当てはめる.ちなみに,普通に小文字でもOK.

  • M - Model
  • C - Controler
  • H - Helper
  • L - Layout
  • S - Stylesheet
  • J - Javascript
  • G - miGration ←うわぁ,無理矢理っ

何故かViewがない.なんで?
これ,ただ単にそのモデルなりコントローラなりを開くってだけで,例えばビューのアクションの上でC-c g Cとしても,そのアクションがあるコントローラのアクションのとこにカーソルが移動するほどに親切ではない.

Rails finds

C-c f K

大層な名前だけど,C-x C-fのRails特化版ってだけ.使い方は,C-c f K.このKはGotoメニューのそれと同じで,たとえばコントローラ(app/controllers/hoge.rb)を編集中にC-c f mとすると,app/models/の下を検索するC-x C-fになるってだけ.Gotoメニューとの使い分けはcollectとmapとの使い分けのようにそれほど差が無いように思える.

関係してるファイルにスイッチ

M-S-UpもしくはM-S-Down

カーソルがコントローラのアクションの中にあるときにM-S-Upとコマンドを打つと,該当するビューに移動できる.ビューテンプレートを編集しているときは,逆に該当しているコントローラのアクションに移動できる.もし幾つか該当するファイルがある場合,M-S-Downとコマンドを打つと一覧が表示される.また該当するビューが無い場合は新規ファイル作成をするか問われる.


行から関係しているファイルにスイッチ

C-Return
C-u C-Return

  • redirect_to
  • render
  • link_to

のある行で,C-Returnをするとそのコントローラのアクションもしくはその:action先のビューに飛べる.ビューからコントローラのアクションに飛ぼうと思うと,C-u C-Returnと打たないと飛べないみたい.C-Returnだけだと,コントローラ#アクションって表示されるか,対応しているビューが無い場合は新しくビューを作るか問われる.
form_tagとかの:actionとかでも飛べれば嬉しいんだけどな.いっそ:actionに関連づけてくれれば良いのになー.


しかしなが,相当クイックにファイルを移動できて,恐らく一番使うコマンド.

タグ

C-c C-t

TAGSファイルとかゆーのをRailsアプリのトップレベディレクトリに作る.よくわからん.

ログ

C-c l

ログファイルを見る.C-c lと打つとEnvironmentを聞かれるので,development,test,productionのうちのどれかを入力.developmentもしくはtestって打つと,Emacsの反応が無くなって返ってこなくなる怖さがある.返ってくるけど.テストドリブンだと,testって打つのは鬼門だと思う.


Rails scripts

ターミナルでぺちぺち打つより,Emacsのコマンドで色んなスクリプトを実行しよう.Rakeとかscript/generate scaffoldとか.基本はC-c s *.sはscriptのs!(だと思う)

Generators

C-c s g K

ターミナルでscript/generate Kって打つのと同じ.Kは,以下の通り.

  • m - Model
  • c - Controller
  • s - Scaffold
  • g - miGration
Destructors

C-c s d K

ターミナルでscript/destroy Kと打つのと同じ.KはGeneratorsのと同じ.
日本語で言うと廃物焼却炉なんだな.おっそろしい.

Rake

C-c s r

いわゆるRake.C-c s rでRake task:と聞かれるので,db:migrateなりなんなり打つが良いよ.

ConsoleとBreakpointer

C-c s c
C-c s b

ConsoleもBreakpointerもまともに使った覚えが無い.そりゃまだ暦が浅いからだろうけど,やり込んでいる人にとってはとても嬉しいに違いない.
C-c s cと打つと,Emacsの画面が2分割されて下画面にコンソールが出現.ただ,当たり前やけどreadlineは対応していません:p

新規プロジェクトの作成

M-x rails-create-project

そのまんま.始めから最後までEmacsでやろうって人には持ってこい.

HTTPサーバとブラウザの統合

WEBrickの起動と停止

EmacsのRubyOnRailsメニューから,WEBrickを選んで起動と停止が行える.ポートの指定はできないっぽい.次期バージョンでは是非・・・.

ブラウザ自動起動

C-c F5あるいはC-u C-c F5

コントローラかビューを弄ってるときに,C-c F5と打つと,現在弄ってるアクションでブラウザが開く.
C-u C-c F5と打つと,パラメータ無しでブラウザを開く.・・・普通に開いたらパラメータなんて無いんじゃないかとか思う.

ドキュメントまわり

Rails HTML APIのドキュメントを探す

C-F1

ドキュメント検索を有効にするために,rails-api-rootという変数をRails HTML APIドキュメントが置いてあるディレクトリに設定しないと行けない.

(setf rails-api-root "/pass/to/rails/html/api/docs")

って.emacs.elに書けば良いのかな.Macだと何処だろう.
検索したいメソッドやクラスにカーソルを持っていって,C-F1で検索.2個以上該当したら選ばないといけない.

その他諸々

SQL console

C-c s s

プロジェクトで使用しているデータベースのSQLのコンソールを起動する.database.ymlで選んでるヤツだと思う.MySQLの場合,GLANTオプションとか設定してるから,パスワードの入力とかはしなくて良いという便利っぷり.勿論,readlineには対応しておりませぬ.しかし,MySQLのコンソールだとEmacsパワー爆発してselectとかの予約語が色付けされる嬉しさ.すげーかっこいい.

SVN

F9

svnは良くわかんないんだけど,F9Railsプロジェクトのsvn-statusを走らせるみたい.


以上.結局,色々できるなぁ.