FrontPage  Index  Search  Changes  RSS  Login

[Ruby] emacs-rails

概要

emacs-rails の機能メモ。

README のサマリを手がかりに、機能を調べてメモしていきます。

rubyforge.org (Subversion)

svn co svn://rubyforge.org/var/svn/emacs-rails/trunk emacs-rails

GitHub

git clone git://github.com/tomtt/emacs-rails.git

rails-minor-mode-prefix-key

Railsマイナーモード用のプレフィックスキーとして、デフォルトで"C-c"が割り当てられている。

コード中で、rails-key "..."の様なキーバインディングがなされていたなら、このプレフィックスキーを使う事になる。

マイナーモード

$ grep define-minor-mode *.el

Railsマイナーモード

rails.el
ruby-mode-hook
C-.タグファイルを使った補完
TABインデントと補完(?)
rails-key fメソッドへのジャンプメニューを表示
C-:文字列とシンボルをトグル
RET改行とインデント
  • *.rbについてspeedbar
  • find-file-hooksとdired-mode-hookでRailsプロジェクトにRailsマイナーモードを適用
  • haml-mode
    • *.haml
  • ruby-mode
    • *.rb, *.rake, *.mab, Rakefile, *.rjs, *.rxml, *.builder, *.rjs
  • html-mode
    • *.rhtml, *.erb
  • utf-8
    • *.rb, *.rake, Rakefile
    • ビュー(正規表現で判断)

モデル用マイナーモード

rails-model-minor-mode.el
rails-model-layout.el
rails-key mモデルにスイッチ
rails-key uユニットテストにスイッチ
rails-key gマイグレーションにスイッチ
rails-key cコントローラにスイッチ
rails-key xフィクスチャにスイッチ
rails-key nmailerにスイッチ

バッファ切り替えについて後述。

フィクスチャ用マイナーモード

モデル用マイナーモードのキーバインディングが利用可能。

バッファ切り替えについて後述。

マイグレーション用マイナーモード

モデル用マイナーモードのキーバインディングが利用可能。

バッファ切り替えについて後述。

コントローラ用マイナーモード

rails-controller-minor-mode.el
rails-controller-layout.el
rails-key gマイグレーションにスイッチ
rails-key mモデルにスイッチ
rails-key hヘルパにスイッチ
rails-key f機能テストにスイッチ
rails-key cコントローラにスイッチ
rails-key uユニットテストにスイッチ

バッファ切り替えについて後述。

ヘルパー用マイナーモード

コントローラ用マイナーモードのキーバインディングが利用可能。

バッファ切り替えについて後述。

ビュー用マイナーモード

ERbのリファクタリングサポート。

rails-key pリージョンからパーシャルを作成する
rails-key bブロックからヘルパを作成する

レイアウト用マイナーモード

モードのみ。

mailer用マイナーモード

コントローラ用マイナーモードのキーバインディングが利用可能。

バッファ切り替えについて後述。

ユニットテスト用マイナーモード

モデル用マイナーモードのキーバインディングが利用可能。

C-,カーソルがあるテストメソッドを実行(?)

バッファ切り替えについて後述。

機能テスト用マイナーモード

コントローラ用マイナーモードのキーバインディングが利用可能。

C-,カーソルがあるテストメソッドを実行(?)

バッファ切り替えについて後述。

snippet

rails-snippets-feature.el
snippet.el

略称展開(abbrev)によるコード補完を行う。詳細はコードで。

0

ruby

erb

  • html-mode-abbrev-table
  • html-helper-mode-abbrev-table
  • nxml-mode-abbrev-table

controller

  • rails-controller-minor-mode-abbrev-table

RESTful

  • rails-controller-minor-mode-abbrev-table
  • rails-view-minor-mode-abbrev-table
  • rails-helper-minor-mode-abbrev-table
  • rails-functional-test-minor-mode-abbrev-table

render

  • rails-controller-minor-mode-abbrev-table
  • rails-view-minor-mode-abbrev-table
  • rails-helper-minor-mode-abbrev-table

redirect_to

  • rails-controller-minor-mode-abbrev-table
  • rails-view-minor-mode-abbrev-table
  • rails-helper-minor-mode-abbrev-table

rails

  • ruby-mode-abbrev-table

model

  • rails-model-minor-mode-abbrev-table

migrations

  • rails-migration-minor-mode-abbrev-table

environment

  • ruby-mode-abbrev-table

tests

  • rails-functional-test-minor-mode-abbrev-table
  • rails-unit-test-minor-mode-abbrev-table

assertions

  • rails-functional-test-minor-mode-abbrev-table
  • rails-unit-test-minor-mode-abbrev-table

1

loops

  • ruby-mode-abbrev-table

general

  • ruby-mode-abbrev-table

definitions

  • ruby-mode-abbrev-table

collections

  • ruby-mode-abbrev-table

ログファイルの表示(カラー対応)

rails-log.el

RAILS_ROOT/log/*.log`tail -f`で開いてバッファに表示する。

rails-key C-c o ttest.log を開く
rails-key C-c o pproduction.log を開く
rails-key C-c o ddevelopment.log を開く
rails-key C-c l 任意のログファイルを開く

script

rails-script.el
rails-key C-c e script/generate
rails-key C-c x script/destroy
rails-key C-c s cscript/console
rails-key C-c s bscript/breakpointer

Rake(C-c C-c r)

rails-rake.el
rails-key C-c r 対話形式で実行するrakeタスクを指定
rails-key C-c d mrake migrate
rails-key C-c d vrake migrate VERSION=
rails-key C-c d prake migrate VERSION=前バージョン
rails-key C-c d trake db:test:clone

※ VERSIONは整数(%.3i)と文字列(%s)に対応

svn-status (f9)

rails.el

Railsプロジェクトのルートについてsvn-statusを実行。

ドキュメントへのショートカット

f1 riによるドキュメント検索(コマンドはrails-ri-command)
C-f1 APIドキュメント(doc/api/)を検索
rails-key f1APIドキュメント(doc/api/)のトップを表示(w3mか代替)
rails-key / script/やrakeの出力ウィンドウをトグル

※ rails-script:toggle-output-window(rails-key /)がDocumentationとコメントされたブロックにある理由が分からない。

設定ファイルへのクイックアクセス

rails-ui.el

多分、メニューのRoR->Configuration->の事だろうと。

※ 詳細はrails-minor-mode-config-menu-bar-map参照。

RAILS_ROOTでTAGS作成 (C-c C-t)

rails.el
rails-ui.el

※ 詳細はrails-create-tags参照。

ウェブサーバ

rails-ws.el
デフォルト設定
  • rails-ws:port
    • 3000
  • rails-ws:server-name
  • rails-ws:default-server-type
    • mongrel
  • rails-ws:available-servers-list
    • mongrel, lighttpd, webrick, thin
rails-key C-c w s起動と終了のトグル
rails-key C-c w ddevelopmentで起動
rails-key C-c w pproductionで起動
rails-key C-c w ttestで起動
rails-key C-c w iサーバの状況を表示
rails-key C-c w aカレントアクションをブラウザで表示

移動

rails-navigation.el

それぞれ、対応するファイルの一覧がメニュー表示され、選択するとそのファイルを開く事ができる。

rails-key C-c g mrails-nav:goto-models
rails-key C-c g crails-nav:goto-controllers
rails-key C-c g orails-nav:goto-observers
rails-key C-c g nrails-nav:goto-mailers
rails-key C-c g hrails-nav:goto-helpers
rails-key C-c g lrails-nav:goto-layouts
rails-key C-c g srails-nav:goto-stylesheets
rails-key C-c g jrails-nav:goto-javascripts
rails-key C-c g grails-nav:goto-migrate
rails-key C-c g prails-nav:goto-plugins
rails-key C-c g xrails-nav:goto-fixtures
rails-key C-c g frails-nav:goto-functional-tests
rails-key C-c g urails-nav:goto-unit-tests

バッファ切り替え

rails-navigation.el

モデルやコントローラで、マイグレーションやテスト、アクションやビューといった、関係するファイルについて簡単にバッファ切り替えを行う事ができる。

  • rails-primary-switch-func
    • 1つめの切り替え処理
    • デフォルトでは"C-c <up>"
    • "C-c p"とかの方が分かりやすい
  • rails-secondary-switch-func
    • 2つめの切り替え処理
    • デフォルトでは"C-c <down>"
    • "C-c n"とかの方が分かりやすい

基本的に、C-c <up>で関連ファイルを渡り歩き、C-c <down>で関連ファイルを選択するメニューを表示する事ができる、と覚えておけば良い(キーバインディングは適宜読み替え)。

モデル用

rails-model-layout.el
rails-model-minor-mode.el
  • rails-primary-switch-func
    • 対応するユニットのファイルを新しいバッファで開く
  • rails-secondary-switch-func
    • 対応する関連ファイルを開くためのメニューを表示する

フィクスチャ用

rails-fixture-minor-mode.el
  • rails-primary-switch-func
    • 対応するユニットのファイルを新しいバッファで開く
  • rails-secondary-switch-func
    • モデル用のメニューを利用する

マイグレーション用

rails-migration-minor-mode.el
  • rails-primary-switch-func
    • なし
  • rails-secondary-switch-func
    • モデル用のメニューを利用する

コントローラ用

rails-controller-layout.el
rails-controller-minor-mode.el
  • rails-primary-switch-func
    • アクションとそれに対応するビューとでトグルする
  • rails-secondary-switch-func
    • 対応する関連ファイルを開くためのメニューを表示する

※ 注) 対応するビューのディレクトリがないとセカンダリも実行できない

ヘルパ用

rails-helper-minor-mode.el
  • rails-primary-switch-func
    • 対応するコントローラのファイルを新しいバッファで開く
  • rails-secondary-switch-func
    • コントローラ用のメニューを利用する

ビュー用

rails-view-minor-mode.el
  • rails-primary-switch-func
    • アクションとビューのトグル
  • rails-secondary-switch-func
    • コントローラ用のメニューを利用する

レイアウト用

なし

mailer用

rails-mailer-minor-mode.el
  • rails-primary-switch-func
    • アクションとビューのトグル
  • rails-secondary-switch-func
    • コントローラ用のメニューを利用する

ユニットテスト用

rails-unit-test-minor-mode.el
  • rails-primary-switch-func
    • 対応するモデルがあればモデルのファイルを新しいバッファで開く
    • なければ対応するmailerを開く
  • rails-secondary-switch-func
    • 対応する関連ファイルを開くためのメニューを表示する
      • モデル用のメニューを利用する

※ 注) RSpecばかり使っているので、これを実際に試してません

機能テスト用

rails-functional-test-minor-mode.el
  • rails-primary-switch-func
    • 対応するコントローラのファイルを新しいバッファで開く
  • rails-secondary-switch-func
    • 対応する関連ファイルを開くためのメニューを表示する
      • コントローラ用のメニューを利用する

現在から推測してファイルを開く(C-RET)

rails-navigation.el

カーソル行かERbブロックについて、宛先を推測し、対応するファイルを開く。

  • layout 'name'
  • render :action => 'name', :controller => 'n'
  • redirect_to :action => 'name', :controller => 'n'
  • stylesheet_link_tag
  • 他、同様のもの

詳細はrails-goto-file-on-current-line参照。

find-fileサポート

カレントディレクトリをモデルやコントローラなどに応じて調整する。

rails-key C-c f m app/models
rails-key C-c f c app/controllers
rails-key C-c f h app/helpers
rails-key C-c f l app/views/layouts
rails-key C-c f s public/stylesheets
rails-key C-c f j public/javascripts
rails-key C-c f g db/migrate
rails-key C-c f b lib
rails-key C-c f t lib/tasks
rails-key C-c f v app/views
rails-key C-c f d db
rails-key C-c f p public
rails-key C-c f f test/fixtures
rails-key C-c f o config
rails-key C-c f r sspec/
rails-key C-c f r cspec/controllers/
rails-key C-c f r mspec/models/
rails-key C-c f r hspec/helpers/
rails-key C-c f r vspec/views/
rails-key C-c f r fspec/fixtures/

テストの実行

rails-test.el
rails-key C-c t 実行するテストタスクを対話形式で選択
rails-key C-c . カレントバッファについてテスト実行
rails-key C-c y irake test:integration
rails-key C-c y urake test:units
rails-key C-c y frake test:functionals
rails-key C-c # rake test:recent
rails-key C-c y arake test

プロジェクト作成(rails-key C-c j)

グローバルなキーバインディングとして定義される。

データベースコンソール(rails-key C-c s s)

rails.el

アダプタに対応するクライアントを起動する。設定はdatabase.ymlから。

  • 環境を対話形式で指定
  • 文字コードはutf-8
  • アダプタ: rails-adapters-alist
    • mysql, postgresql, sqlite3
    • sqlite3 のコマンド名はsqliteである事に注意

RSpec

rails-spec.el
rails-spec:run-files対話形式でファイルを指定して実行
rails-spec:run-this-file現在のバッファで開いているファイルを実行
rails-spec:run-allすべて実行
rails-spec:run-last最後に実行したファイルを実行する
rails-spec:run-this-specカーソルがあたっているspecを実行

RSpecをバッファ切り替えに含める変更例は、以下で。

追加したキーバインディング

goto
rails-key C-c g r c'rails-nav:goto-rspec-controllers
rails-key C-c g r f'rails-nav:goto-rspec-fixtures
rails-key C-c g r l'rails-nav:goto-rspec-lib
rails-key C-c g r m'rails-nav:goto-rspec-models
script/spec
rails-key C-c z f'rails-spec:run-files
rails-key C-c z .'rails-spec:run-this-file
rails-key C-c z a'rails-spec:run-all
rails-key C-c z l'rails-spec:run-last
rails-key C-c z s'rails-spec:run-this-spec

備考

  • 2008/09/30 タイトル間違えに気づいたのでタイトルだけ修正

TODO

  • 挙動をコントロールするパラメータの抽出
    • defvar, defconst
Last modified:2008/10/01 18:57:52
Keyword(s):[ruby] [emacs]
References: