ruby: improve configuration for rbenv and rvm
Update documentation
This commit is contained in:
parent
d1ec732cd4
commit
9eb8f86b9a
|
@ -69,8 +69,13 @@ example:
|
||||||
'((ruby :variables ruby-version-manager 'rvm)))
|
'((ruby :variables ruby-version-manager 'rvm)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
=Tip:= You can enable different version manager for different projects by using
|
When a version manager is enabled it will use the currently activated ruby
|
||||||
directory local variables.
|
except if a =.ruby-version= file exists in which case the ruby version of
|
||||||
|
this file is used.
|
||||||
|
=rvm= will also try to look for a =.rvmrc= and =gemfile=, the priority order is
|
||||||
|
=.rvmrc= then =.ruby-version= then =gemfile=.
|
||||||
|
|
||||||
|
Note: Only one version manager at a time can be enabled.
|
||||||
|
|
||||||
** Test runner
|
** Test runner
|
||||||
This layer supports both =RSpec= and =ruby-test= test runners (frameworks).
|
This layer supports both =RSpec= and =ruby-test= test runners (frameworks).
|
||||||
|
|
|
@ -17,59 +17,60 @@
|
||||||
company
|
company
|
||||||
evil-matchit
|
evil-matchit
|
||||||
flycheck
|
flycheck
|
||||||
|
rbenv
|
||||||
robe
|
robe
|
||||||
ruby-test-mode
|
ruby-test-mode
|
||||||
rspec-mode
|
rspec-mode
|
||||||
ruby-tools
|
ruby-tools
|
||||||
rubocop
|
rubocop
|
||||||
|
rvm
|
||||||
))
|
))
|
||||||
|
|
||||||
(if ruby-enable-enh-ruby-mode
|
(if ruby-enable-enh-ruby-mode
|
||||||
(add-to-list 'ruby-packages 'enh-ruby-mode)
|
(add-to-list 'ruby-packages 'enh-ruby-mode)
|
||||||
(add-to-list 'ruby-packages 'ruby-mode))
|
(add-to-list 'ruby-packages 'ruby-mode))
|
||||||
|
|
||||||
(when ruby-version-manager
|
|
||||||
(add-to-list 'ruby-packages ruby-version-manager))
|
|
||||||
|
|
||||||
(defun ruby/init-chruby ()
|
(defun ruby/init-chruby ()
|
||||||
(use-package chruby
|
(use-package chruby
|
||||||
|
:if (equal 'chruby 'ruby-version-manager)
|
||||||
:defer t
|
:defer t
|
||||||
:init
|
:init
|
||||||
(progn
|
(progn
|
||||||
(defun spacemacs//enable-chruby ()
|
(defun spacemacs//enable-chruby ()
|
||||||
"Enable chruby, use .ruby-version if exists."
|
"Enable chruby, use .ruby-version if exists."
|
||||||
(when (equal 'chruby 'ruby-version-manager)
|
|
||||||
(let ((version-file-path (chruby--locate-file ".ruby-version")))
|
(let ((version-file-path (chruby--locate-file ".ruby-version")))
|
||||||
(require 'chruby)
|
(chruby)
|
||||||
;; try to use the ruby defined in .ruby-version
|
;; try to use the ruby defined in .ruby-version
|
||||||
(if version-file-path
|
(if version-file-path
|
||||||
(progn
|
(progn
|
||||||
(chruby-use (chruby--read-version-from-file
|
(chruby-use (chruby--read-version-from-file
|
||||||
version-file-path))
|
version-file-path))
|
||||||
(message "Using ruby version from .ruby-version file."))
|
(message (concat "[chruby] Using ruby version "
|
||||||
(message "Using the currently activated ruby.")))))
|
"from .ruby-version file.")))
|
||||||
|
(message "[chruby] Using the currently activated ruby."))))
|
||||||
(spacemacs/add-to-hooks 'spacemacs//enable-chruby
|
(spacemacs/add-to-hooks 'spacemacs//enable-chruby
|
||||||
'(ruby-mode-hook enh-ruby-mode-hook)))))
|
'(ruby-mode-hook enh-ruby-mode-hook)))))
|
||||||
|
|
||||||
(defun ruby/init-rbenv ()
|
(defun ruby/init-rbenv ()
|
||||||
"Initialize RBENV mode"
|
|
||||||
(use-package rbenv
|
(use-package rbenv
|
||||||
|
:if (equal 'rbenv 'ruby-version-manager)
|
||||||
:defer t
|
:defer t
|
||||||
:init (global-rbenv-mode)
|
:init
|
||||||
:config (dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
|
|
||||||
(add-hook hook (lambda () (rbenv-use-corresponding))))))
|
|
||||||
|
|
||||||
(defun ruby/init-rvm ()
|
|
||||||
"Initialize RVM mode"
|
|
||||||
(use-package rvm
|
|
||||||
:defer t
|
|
||||||
:init (rvm-use-default)
|
|
||||||
:config
|
|
||||||
(progn
|
(progn
|
||||||
(setq rspec-use-rvm t)
|
(defun spacemacs//enable-rbenv ()
|
||||||
(dolist (hook '(ruby-mode-hook enh-ruby-mode-hook))
|
"Enable rbenv, use .ruby-version if exists."
|
||||||
(add-hook hook
|
(let ((version-file-path (rbenv--locate-file ".ruby-version")))
|
||||||
(lambda () (rvm-activate-corresponding-ruby)))))))
|
(global-rbenv-mode)
|
||||||
|
;; try to use the ruby defined in .ruby-version
|
||||||
|
(if version-file-path
|
||||||
|
(progn
|
||||||
|
(rbenv-use (rbenv--read-version-from-file
|
||||||
|
version-file-path))
|
||||||
|
(message (concat "[rbenv] Using ruby version "
|
||||||
|
"from .ruby-version file.")))
|
||||||
|
(message "[rbenv] Using the currently activated ruby."))))
|
||||||
|
(spacemacs/add-to-hooks 'spacemacs//enable-rbenv
|
||||||
|
'(ruby-mode-hook enh-ruby-mode-hook)))))
|
||||||
|
|
||||||
(defun ruby/init-ruby-mode ()
|
(defun ruby/init-ruby-mode ()
|
||||||
(use-package ruby-mode
|
(use-package ruby-mode
|
||||||
|
@ -232,6 +233,16 @@
|
||||||
"tb" 'ruby-test-run
|
"tb" 'ruby-test-run
|
||||||
"tt" 'ruby-test-run-at-point))))
|
"tt" 'ruby-test-run-at-point))))
|
||||||
|
|
||||||
|
(defun ruby/init-rvm ()
|
||||||
|
(use-package rvm
|
||||||
|
:if (equal 'rvm 'ruby-version-manager)
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(progn
|
||||||
|
(setq rspec-use-rvm t)
|
||||||
|
(spacemacs/add-to-hooks 'rvm-activate-corresponding-ruby
|
||||||
|
'(ruby-mode-hook enh-ruby-mode-hook)))))
|
||||||
|
|
||||||
(when (configuration-layer/layer-usedp 'auto-completion)
|
(when (configuration-layer/layer-usedp 'auto-completion)
|
||||||
(defun ruby/post-init-company ()
|
(defun ruby/post-init-company ()
|
||||||
(spacemacs|add-company-hook ruby-mode)
|
(spacemacs|add-company-hook ruby-mode)
|
||||||
|
|
Loading…
Reference in a new issue