Skip to content

Latest commit

 

History

History
executable file
·
242 lines (192 loc) · 6.47 KB

31_ruby.org

File metadata and controls

executable file
·
242 lines (192 loc) · 6.47 KB

Ruby

みんな大好き Ruby だお.

入力支援

ruby-mode

(use-package ruby-mode
  :commands ruby-mode
  :mode   (("\\.rb$" . ruby-mode)
	   ("Capfile$" . ruby-mode)
	   ("Gemfile$" . ruby-mode)
	   ("[Rr]akefile$" . ruby-mode))
  :interpreter "ruby")

enhanced-ruby-mode

Better Ruby Mode.

参考:enhanced-ruby-mode の概説 - Qiita

; must be added after any path containing old ruby-mode
;;(use-package enh-ruby-mode)
;;(autoload 'enh-ruby-mode "enh-ruby-mode" "Major mode for ruby files" t)
;;(add-to-list 'auto-mode-alist '("\\.rb$" . enh-ruby-mode))

;;(add-to-list 'auto-mode-alist '("\\.rb$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("Capfile$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("Gemfile$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("[Rr]akefile$" . enh-ruby-mode))
;;(add-to-list 'load-path "~/.emacs.d/elips/el-get/enh-ruby-mode")
;;(add-to-list 'interpreter-mode-alist '("ruby" enh-ruby-mode))

;;(remove-hook 'enh-ruby-mode-hook 'erm-define-faces)

robe

Ruby 用の補完をする. 補完は auto-complete という有名な elisp がある. もっと賢いのがオムニ補完と呼ばれるもの. これは文法を解析して補完してくれる.

el-get 経由で robe-mode を入れる.

また, pry というものも必要みたい. 詳しくは github の README 参照で.

gem install pry pry-doc 

設定を追記.

(use-package robe
  :init
  (add-hook 'ruby-mode-hook 'robe-mode)
  :config
  (setq robe-highlight-capf-candidates nil))

ruby-electric.el

electric editing commands for ruby files

かっこや do end などの対応関係を自動で補正してくれる -> smartparen-mode に置き換えるので廃止。

;;(use-package  ruby-electric
;;  :disabled t
;;  :init
;;  (add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))
;;  :config
;;  (setq ruby-electric-expand-delimiters-list nil)
;;)

ruby-block

かっこや do end などの対応関係を自動でハイライトしてくれる

(use-package ruby-block
  :commands ruby-block-mode
  :init
  (add-hook 'ruby-mode-hook '(lambda () (ruby-block-mode t)))
  :config
  (setq ruby-block-highlight-toggle t))

ruby-refactor

Ruby 用リファクタリングツール

(use-package ruby-refactor
  :config
  (add-hook 'ruby-mode-hook '(lambda () (ruby-refactor-mode-launch))))

helm-rdefs

rdefs はソースコードの class や module, def といった宣言のラインを引っ張り出してくれるツール.

gem install rdefs

helm I/F を経由して, Emacs から利用することができる.

.emacs の設定は以下.

(require 'helm)
(require 'helm-rdefs)
(add-hook 'ruby-mode-hook
          (lambda ()
            (define-key ruby-mode-map (kbd "C-c @") 'helm-rdefs)))

補完

yasnippet-ruby

Emacs のスニペット挿入機能といえば, yasnippet だが, その Ruby 用テンプレート群をいれる.

ここからダウンロードして, yasnippet のスニペット一覧に突っ込む!

いちおう, yasnippets の設定も載せておく. ここでは, ~/.emacs.d/snippets にいれた.

(require 'yasnippet)
(yas/load-directory "~/.emacs.d/snippets")
(yas-global-mode 1)

;; 既存スニペットを挿入する
(define-key yas-minor-mode-map (kbd "C-x i i") 'yas-insert-snippet)
;; 新規スニペットを作成するバッファを用意する
(define-key yas-minor-mode-map (kbd "C-x i n") 'yas-new-snippet)
;; 既存スニペットを閲覧・編集する
(define-key yas-minor-mode-map (kbd "C-x i v") 'yas-visit-snippet-file)

デバッグ

ruby-debug

標準ライブラリのデバッカ. ステップ実行できる. elisp は ruby のソースに梱包されている.

(use-package rubydb :commands rubydb)

inf-ruby

emacs から irb を操作

(use-package inf-ruby
  :commands inf-ruby
  :init
  (add-hook 'ruby-mode-hook 'inf-ruby-minor-mode)
  )

autotest

rspec 自動実行.

;; 動かん!
;; (use-package autotest)

rspec-mode

rspec 拡張

(use-package rspec-mode
  :defer 20
  :commands rspec-mode
  :config
  (add-hook 'ruby-mode-hook 'rspec-mode)
  ;; (rspec-install-snippets)
  :config
  (custom-set-variables '(rspec-use-rake-flag nil))
  (custom-set-faces))

minitest

A minitest mode for emacs

rake とか bundle とか、本格的にプロジェクト管理していないと 利用できない. quickrun のほうが良さげ.

(use-package minitest
  :init
  (add-hook 'ruby-mode-hook 'minitest-mode))
;;  :config
;;  (minitest-install-snippets))

pry

inf-ruby よりも高機能らしい REPL.

(require 'pry)
;; optional suggestions
(global-set-key [S-f9] 'pry-intercept)
(global-set-key [f9] 'pry-intercept-rerun)

静的解析

flycheck

-> programming に移動.

robocop

checkstyle のようなスタイルの解析

gem install rubocop

(use-package rubocop
  :init
  (add-hook 'ruby-mode-hook 'rubocop-mode))

Rails

projectile-rails

Ruby on rails 用.

(use-package projectile-rails
  :disabled t
  :commands (projectile-rails-on)
  :init
  (add-hook 'projectile-mode-hook 'projectile-rails-on))