2007年10月14日日曜日

EmacsからRubyスクリプトを実行する(だけの)Tips

最終的にLinuxにアップロードするのに、Windowsでコードを書くのが嫌になってきていたので、前から気になっていたEmacs環境を構築し、移行が可能か試してみる事にしました。

良さげであれば、これでまたWindowsから離れやすくなりますw
将来のための備忘録としてまとめておきます。

■参考サイト
coLinux ちょっとずつ設定(wget and ruby-mode)

Meadow上でRubyを実行させる(inf-ruby.el導入済みが前提条件?) - 英語とプログラミング気まぐれ日記

※参考というよりも、ほとんど丸パクリです。(両サイトの管理者様、ありがとうございます!)

■環境
VMware上のCentOS-5.0

■作業概要
1.Emacsのインストール
2.Rubyのインストール
3.Emacsの設定
4.スクリプトを実行するには

■1.Emacsのインストール
yumでサクッと行きます。

# /usr/bin/yum install emacs


■2.Rubyのインストール
これまたyumで。便利になったもんだ。

# /usr/bin/yum install ruby


■3.Emacsの設定
ruby-modeというライブラリファイルを読み込む必要があるようです。

○3-1.ライブラリファイル保管ディレクトリ作成。

~/elispというディレクトリは予め作っておく。

1. ~/.emacsを開く(or作成)
2. 下の内容を追加
;; emacsのロードパス
(setq load-path
(append
(list
(expand-file-name "~/elisp/")
)
load-path))

3. emacsでM-x eval-buffer

これでロードパスの設定はおしまい。


○3-2.ruby-modeファイルの取得
yumで入れると、ruby-modeなどの設定ファイルがなかった(?)ため、ソースを落としてきます。
yumでインストールすると、v1.8.5なので(2007/10/14現在)、今回も一応1.8.5のソースアーカイブファイルをダウンロード
※どうやら、v1.8.5のruby-mode.elにはindent系のバグがあるようなので、v1.8.6のものを上書きしました。今のところ問題なく動いています。(2007.10.15追記)

$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz


解凍して、前述の保管ディレクトリにコピー

$ tar zxvf ruby-1.8.6.tar.gz
$ cd ruby-1.8.6/misc
$ cp *.el ~/elisp


○3-3.Emacs設定ファイル変更
最後に.emacs(ログインユーザのホームディレクトリにあるEmacs設定ファイル)に、以下の箇所を追記。

;; Ruby
(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)))


つうか、丸パクリ過ぎ。。引用多すぎますね。。

■4.スクリプトを実行するには
ruby-mode系の設定ファイルがきちんと読み込まれていると
Emacsにて、M-x run-ruby で、irbが別ウィンドウで立ち上がります。

って、立ち上がらない。。
yumでRubyだけインストールすると、irbが入ってないようです。
ということで、これまたyumでインストール

# yum install irb


その後、M-x run-ruby で無事irbが立ち上がりました。

irbウィンドウ起動させた後、C-c C-l から、該当スクリプトを指定すると、Rubyスクリプトとして実行されます。

■今後の宿題
・デバッガの準備
・RoRでの利用を睨んで、プロジェクト形式でファイル管理するには
・subversionでのバージョン管理とEmacsからの連携
・などなど

0 件のコメント: