iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0
Software Development

Emacs 來寫程式系列 第 23

[Emacs-23] 用 Emacs 來寫 Ruby 設定篇

Emacs 對於編輯 Ruby 程式的功能

  • 程式補全: Company + robe
  • 跳到函式定義: robe
  • 顯示函式定義及文件: Eldoc + robe
  • 語法檢查:flycheck + rubocop
  • 程式排版美化:rufo
  • 專案管理: projectile-rails

預先安裝

  • robe 需要先安裝
$gem install pry pry-doc
  • 安裝 rufo
$gem install rufo
  • 安裝 rubocop
$gem install rubocop

編輯 rubocop 設定檔 ~/.rubocop.yml

AllCops:   
  Exclude:     
    - 'db/**/*'     
    - 'config/**/*'     
    - 'script/**/*'

Emacs 安裝

  • 安裝 ruby-mode 跟 rvm
(use-package ruby-mode
  :ensure t
  :mode ("\\.rb\\'" "Rakefile\\'" "Gemfile\\'" "Berksfile\\'" "Vagrantfile\\'")
  :config
  (use-package rvm
    :ensure t
    :config
    (rvm-use-default))
  (add-hook 'ruby-mode-hook (lambda ()
                              (add-to-list (make-local-variable 'company-backends)
                                           '(company-robe))))
  )

當檔案為 .rb, Rakefile, Gemfile... 時啟動 ruby-mode,當使用 rvm 時,內定使用 default version,加入 company-robe 為 company-backends

  • 安裝 inf-ruby 跟 ruby-electric
(use-package inf-ruby
  :ensure t
  :hook (ruby-mode . inf-ruby-minor-mode)
  :config
  )

(use-package ruby-electric
  :ensure t
  :hook (ruby-mode . ruby-electric-mode)
  )

inf-ruby 是可以在 Emacs 環境下,直譯 ruby 的 REPL (Read-Eval-Print-Loop) 的功能,內定使用 Ctrl-c Ctrl-s 啟動, ruby-electric 可以自動為函式的區塊補 end

  • 安裝 robe
(use-package robe
  :ensure t
  :hook (ruby-mode . robe-mode)
  :config
  (defadvice inf-ruby-console-auto (before activate-rvm-for-robe activate)
    (rvm-activate-corresponding-ruby))
  )

robe 的使用較為複雜,它會需要先啟動 inf-ruby,藉著它來解析本地的 module,如果有Gemfile, Rakefile 等專案資訊, robe 可以使用 inf-ruby-console-auto 來自動啟動,如果只是單一程式,則必須使用 Ctrl-c Ctrl-s 掀啟動 inf-ruby 再用 Meta-x robe-start 來啟動

  • 安裝 rubocop 跟 rufo
(use-package rubocop
  :ensure t
  :hook (ruby-mode . rubocop-mode)
  )
  
(use-package rufo
  :ensure t
  :hook (ruby-mode . rufo-minor-mode)
  )

只要將這兩個次模式 hook 到 ruby-mode 即可

  • 安裝 projectile-rails
(use-package projectile-rails
 :ensure t
 :hook (projectile-mode . projectile-rails-on)
 )

projectile-rails 提供與先前介紹的 projectile 完美整合來編輯 Ruby on Rails 的專案

相關影片:Yes

相關簡報:簡報
相關程式: Github 請下載到 ~/.emacs.d 下,啟動 Emacs 則會自動安裝套件
相關資訊; 請參考我的部落格


上一篇
[Emacs-22] 用 Emacs 來寫 Go 之範例篇
下一篇
[Emacs-24] 用 Emacs 來寫 Ruby 實戰篇
系列文
Emacs 來寫程式30

尚未有邦友留言

立即登入留言