Emacs で Ruby 開発環境
Ruby や Rails の開発環境として Aptana Studio や NetBeans を試してみたんですが,やはりキーボードですべての操作を行うことができる Emacs を使うことにしました。僕が設定した内容をご紹介します。
設定
今回,僕が Emacs に設定したのは ruby-mode.el と,マイナーモードの ruby-electric.el(対応する括弧やendを自動補完してくれる), rails.el, ruby-block.el(end に対応する行をハイライトする),それから Ruby のデバッガを起動できる rubydb とソースコードのディレクトリやファイル,メソッドを表示してくれる ECB です。
まず,Ruby のソースをダウンロードして展開し,misc ディレクトリに入っているすべての *.el ファイルを load-path の通ったところに置きます。(今回は,~/elisp/ に置きました。)
次に,emacs-railsをダウンロードして展開し,同様にすべての *.el ファイルを load-path の通ったところ (~/elisp/) に置きます。
さらに,ruby-block.elをダウンロードして load-path の通ったところ (~/elisp/) に置きます。
次に,ECB をインストールします。ECB の動作には CEDIT も必要だそうなので,これも同時にインストールします。(~/elisp/ にインストールする場合)
$ cd ~/elisp $ wget "http://jaist.dl.sourceforge.net/sourceforge/cedet/cedet-1.0pre3.tar.gz" $ tar xvfz cedet-1.0pre3.tar.gz $ cd cedet-1.0pre3 $ make $ cd .. $ wget "http://jaist.dl.sourceforge.net/sourceforge/ecb/ecb-2.32.tar.gz" $ tar xvfz ecb-2.32.tar.gz $ cd ecb-2.32 $ make CEDET=../cedet-1.0pre3/
そして .emacs に以下を追加します。(~/elisp/ のところを適時変えてください。)
;; ~/elisp をライブラリパスに追加 (setq load-path (append (list (expand-file-name "~/elisp/") ) load-path)) ;; ruby-mode (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) (setq auto-mode-alist (append '(("\\.rb$" . ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("ruby" . ruby-mode)) interpreter-mode-alist)) (autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") (autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode") (add-hook 'ruby-mode-hook '(lambda () (inf-ruby-keys))) ;; ruby-electric (require 'ruby-electric) (add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t))) ;; rubydb (autoload 'rubydb "rubydb3x" "run rubydb on program file in buffer *gud-file*. the directory containing file becomes the initial working directory and source-file directory for your debugger." t) ;; rails (defun try-complete-abbrev (old) (if (expand-abbrev) t nil)) (setq hippie-expand-try-functions-list '(try-complete-abbrev try-complete-file-name try-expand-dabbrev)) (setq rails-use-mongrel t) (require 'cl) (require 'rails) ;; ruby-block (require 'ruby-block) (ruby-block-mode t) ;; ミニバッファに表示し, かつ, オーバレイする. (setq ruby-block-highlight-toggle t) ;; ECB (setq load-path (cons (expand-file-name "~/elisp/ecb-2.32") load-path)) (load-file "~/elisp/cedet-1.0pre3/common/cedet.el") (setq semantic-load-turn-useful-things-on t) (require 'ecb) (setq ecb-tip-of-the-day nil) (setq ecb-windows-width 0.25) (defun ecb-toggle () (interactive) (if ecb-minor-mode (ecb-deactivate) (ecb-activate))) (global-set-key [f2] 'ecb-toggle)
使い方
僕が使っている機能の使い方を以下にまとめてみます。
機能 | キーバインド |
---|---|
ruby-mode.el | |
Ruby のソースファイルに色が付く | − |
インデントして改行 | C-j |
改行 | C-m |
end を挿入 | C-cC-e |
ruby-electric.el | |
「{}」などの括弧の補完 | − |
「class」や「def」,「if」などの後の「end」を補完 | − |
rubydb | |
デバッガを起動 | M-x rubydb |
ブレークポイントを設定 | C-x space |
rails.el | |
対応する controller/view の切り替え | C-c |
行き先を選べるファイルの切り替え | C-c |
関連するファイルを開く | C-RET |
ruby-block.el | |
end に対応する行をハイライトする | − |
ECB | |
ECB を起動 | [F2] |
Edit-window 1 バッファに移動 | C-c . g 1 |
ディレクトリバッファに移動 | C-c . g d |
ソースファイルバッファに移動 | C-c . g m |
履歴バッファに移動 | C-c . g h |
ディレクトリバッファでのツリーの開閉 | [Tab] |
選択 | [RET] |
これで Aptana や NetBeans と同等かそれ以上の開発環境が Emacs で実現できたと思います。ECB はすごいですね。Emacs でこんなこともできたんですね。rails.el の使い方に関してはまだ全然分かっていないので,これから少しずつ勉強します。rails.el は snippet でいろんな補完ができるみたいなんですけどうまくいきません。ruby-electric と相性が悪いんかな?
参考
上記の設定や使い方よりも詳しいものが載っているので参考にしてください。
- ruby-mode.el と ruby-electric.el,rails.el の設定
- MeadowでRuby on Rails - ミュートス・ラボ
- ruby-mode.el の使い方
- meadowのruby-mode.elのコマンドをまとめておく - まうめも
- rails.el の使い方
- rails.el まとめ - ひげぽん OSとか作っちゃうかMona-
- rails.el のキーバインド
- rails.elのキーバインド - subpop
- rubydb の設定・使い方
- Rubyのページ
- ruby-block.el の設定・使い方
- end に対応する行をハイライトするelispパッケージ ruby-block.el 更新 - とりあえず暇だったし何となく始めたブログ
- ECB の設定
- OSX+Emacsで快適なRails開発ライフを送る - masuidrive on rails
- ECB の使い方
- Emacs Code Browser の使い方 - From a Far East Island