# Ruby contribution layer for Spacemacs ![logo](img/ruby.gif) **Table of Contents** - [Ruby contribution layer for Spacemacs](#ruby-contribution-layer-for-spacemacs) - [Description](#description) - [Install](#install) - [Prerequisites](#prerequisites) - [Ruby version management](#ruby-version-management) - [Rails support](#rails-support) - [Key bindings](#key-bindings) - [Ruby (enh-ruby-mode, robe, inf-ruby)](#ruby-enh-ruby-mode-robe-inf-ruby) - [ruby-test-mode](#ruby-test-mode) - [Rails (projectile-rails)](#rails-projectile-rails) - [Code Navigation](#code-navigation) - [Refactoring](#refactoring) - [RUN commands](#run-commands) - [Ex-commands](#ex-commands) ## Description This layer aims at providing support for the Ruby language using [enh-ruby-mode][] and [robe-mode][]. ## Install To use this contribution add it to your `~/.spacemacs` ```elisp (setq-default dotspacemacs-configuration-layers '(ruby)) ``` ### Prerequisites Some of the advanced features supported by this layer depend on external gems that need to be installed in the context of your project (see below for guidance based on your version manager): * `pry` and `pry-doc` are required for *jump to definition* and *code documentation* (`robe-mode`) * `ruby_parser` is required for *goto-step_definition* in `feature-mode` You can install the gems in the context of your current project by adding them to the `Gemfile`, e.g.: ```ruby gem 'pry' ``` or on the command line (please refer to your ruby version manager specific documentation for details and caveats): ```shell $ gem install pry ``` ### Ruby version management This layer supports the use of [RVM][] and [Rbenv][]. To enable it, set the `ruby-version-manager` var in your `~/.spacemacs`: ```elisp (defun dotspacemacs/init () (setq-default ruby-version-manager 'rbenv) ) ``` Possible values are `rbenv` and `rvm`. ### Rails support Rails support is available through [projectile-rails][]. To enable it, set the `ruby-enable-ruby-on-rails-support` var in your `~/.spacemacs`: ```elisp (defun dotspacemacs/init () (setq-default ruby-enable-ruby-on-rails-support t) ) ``` This will also add [haml-mode][] (for templates written in [haml language][] and [feature-mode][] for [Cucumber][] support. ## Key bindings ### Ruby (enh-ruby-mode, robe, inf-ruby) Key binding | Description ---------------------|------------ SPC m g g | go to definition (robe-jump) SPC m h d | go to Documentation SPC m s f | send function definition SPC m s F | send function definition and switch to REPL SPC m s i | start REPL SPC m s r | send region SPC m s R | send region and switch to REPL SPC m s s | switch to REPL ### ruby-test-mode ruby-test-mode comes bundled with spacemacs, but this contribution adds a couple of useful keybindings: Key binding | Description ---------------------|------------ SPC m t b | run test file SPC m t t | run test at pointer ### Rails (projectile-rails) #### Code Navigation Key binding | Description -----------------------|------------ SPC m r f a | find localization file SPC m r f c | find controller SPC m r f e | find environment file SPC m r f f | find feature SPC m r f h | find helper SPC m r f i | find initializer SPC m r f j | find javascript file SPC m r f l | find library SPC m r f m | find model SPC m r f n | find migration SPC m r f o | find log SPC m r f p | find spec file SPC m r f r | find rake task SPC m r f s | find stylesheet file SPC m r f t | find test SPC m r f u | find fixture SPC m r f v | find view SPC m r f y | find layout SPC m r f @ | find mailer SPC m r g c | go to current controller SPC m r g d | go to DB schema SPC m r g e | go to DB seeds SPC m r g h | go to current helper SPC m r g j | go to current javascript SPC m r g g | go to Gemfile SPC m r g m | go to current model SPC m r g n | go to current migration SPC m r g p | go to current spec SPC m r g r | go to routes SPC m r g s | go to current stylesheet SPC m r g t | go to current test SPC m r g u | go to current fixture SPC m r g v | go to current view SPC m r g z | go to spec helper SPC m r g . | go to file at point (faster but less powerful than SPC m g g) #### Refactoring Key binding | Description -----------------------|------------ SPC m r R x | extract region into partial #### RUN commands Key binding | Description -----------------------|------------ SPC m r c c | run rails generator SPC m r i | start rails console SPC m r s r | reload Rails project SPC m r r : | run rake task SPC m r x s | start rails server #### Ex-commands Key binding | Description -----------------------|------------ :A | Switch between implementation and tests [enh-ruby-mode]: https://github.com/zenspider/enhanced-ruby-mode [robe-mode]: https://github.com/dgutov/robe [Rbenv]: https://github.com/sstephenson/rbenv [RVM]: https://rvm.io/ [projectile-rails]: https://github.com/asok/projectile-rails [haml-mode]: https://github.com/nex3/haml-mode [feature-mode]: https://github.com/michaelklishin/cucumber.el [rspec-mode]: https://github.com/pezra/rspec-mode [Cucumber]: http://cukes.info [haml language]: http://haml.info