https://github.com/asok/projectile-rails.git
git clone 'git://github.com/asok/projectile-rails.git'
Projectile Rails is a minor mode for working with the Rails project in GNU Emacs. Internally it is based on Projectile.
It means that you can use Projectile's commands for greping (or acking) files, run tests, switch between projects, etc.
With Projectile Rails you are able to:
rake
rails console
rails generate
rails server
auto-revert-mode
onIt can be a replacement for rinari.
Once you have setup Melpa you can use package-install
command to install Projectile Rails. The package name is projectile-rails
.
The package name for el-get is projectile-rails
.
To make it start alongside projectile-mode
:
(add-hook 'projectile-mode-hook 'projectile-rails-on)
That will start it only if the current project is a Rails project.
Probably you should read Projectile's README on setting up the completion system, caching and indexing files. Although the default settings are quite sensible and you should be ready to go without much tweaking.
The mode's buffers will have the Rails keywords highlighted. To turn it off:
el
(setq projectile-rails-add-keywords nil)
If you have yas-minor-mode or yas-global-mode enabled and you open a new file it will be filled with a skeleton class. To turn it off:
el
(setq projectile-rails-expand-snippet nil)
By default the buffer of the projectile-rails-server-mode
is applying the ansi colors. If you find it slow you can disable it with:
el
(setq projectile-rails-server-mode-ansi-colors nil)
Command | Keybinding | Description
—————————————–|——————————————–|——————————————————-
projectile-rails-find-model | C-c r m | Find a model using projectile-completion-system
.
projectile-rails-find-current-model | C-c r M | Go to a model connected with the current resource.
projectile-rails-find-controller | C-c r c | Find a controller using projectile-completion-system
.
projectile-rails-find-current-controller | C-c r C | Go to a controller connected with the current resource.
projectile-rails-find-view | C-c r v | Find a template or partial using projectile-completion-system
.
projectile-rails-find-current-view | C-c r V | Go to a view connected with the current resource.
projectile-rails-find-helper | C-c r h | Find a helper using projectile-completion-system
.
projectile-rails-find-current-helper | C-c r H | Go to a helper connected with the current resource.
projectile-rails-find-lib | C-c r l | Find a lib using projectile-completion-system
.
projectile-rails-find-feature | C-c r f | Find a feature using projectile-completion-system
.
projectile-rails-find-spec | C-c r p | Find a spec using projectile-completion-system
.
projectile-rails-find-current-spec | C-c r P | Go to a spec connected with the current resource.
projectile-rails-find-test | C-c r t | Find a test using projectile-completion-system
.
projectile-rails-find-current-test | C-c r T | Go to a test connected with the current resource.
projectile-rails-find-migration | C-c r n | Find a migration using projectile-completion-system
.
projectile-rails-find-current-migration | C-c r N | Go to a migration connected with the current resource.
projectile-rails-find-fixture | C-c r u | Find a fixture using projectile-completion-system
.
projectile-rails-find-current-fixture | C-c r U | Go to a fixture connected with the current resource.
projectile-rails-find-javascript | C-c r j | Find a javascript using projectile-completion-system
.
projectile-rails-find-stylesheet | C-c r s | Find a stylesheet using projectile-completion-system
.
projectile-rails-find-log | C-c r o | Find a log file and enable auto-revert-tail-mode
in its buffer.
projectile-rails-find-initializer | C-c r i | Find an initializer file using projectile-completion-system
.
projectile-rails-find-environment | C-c r e | Find an environment file using projectile-completion-system
.
projectile-rails-find-locale | C-c r a | Find a locale file using projectile-completion-system
.
projectile-rails-find-mailer | C-c r @ | Find a mailer file using projectile-completion-system
.
projectile-rails-find-validator | (Unbound) | Find a validator file using projectile-completion-system
.
projectile-rails-find-layout | C-c r y | Find a layout file using projectile-completion-system
.
projectile-rails-find-rake-task | C-c r k | Find a rake task file using rake-completion-system
.
projectile-rails-find-job | C-c r y | Find a job file using projectile-completion-system
.
projectile-rails-console | C-c r ! c, C-c r r | Run rails console
command in inf-ruby
buffer.
projectile-rails-server | C-c r ! s, C-c r R | Run rails server
.
projectile-rails-rake | C-c r ! r | Select a rake task to run using projectile-completion-system
.
projectile-rails-generate | C-c r ! g | Run rails generate
command.
projectile-rails-extract-region | C-c r x | Extract the selected region to a partial.
projectile-rails-goto-file-at-point | C-c r RET, C-c r g f | Go to a file at point. Depending on the context that might be a constant, template or partial, or a gem.
projectile-rails-goto-gemfile | C-c r g g | Go to Gemfile
file.
projectile-rails-goto-routes | C-c r g r | Go to config/routes.rb
file.
projectile-rails-goto-schema | C-c r g d | Go to db/schema.rb
file.
projectile-rails-goto-seeds | C-c r g s | Go to db/seeds.rb
file.
projectile-rails-goto-spec-helper | C-c r g h | Go to spec/spec_helper.rb
file.
You might want to create your own keybinding for your favorite commands. For example:
(define-key projectile-rails-mode-map (kbd "s-m") 'projectile-rails-find-model)
(define-key projectile-rails-mode-map (kbd "s-c") 'projectile-rails-find-controller)
(define-key projectile-rails-mode-map (kbd "s-v") 'projectile-rails-find-view)
(define-key projectile-rails-mode-map (kbd "s-RET") 'projectile-rails-goto-file-at-point)
(define-key projectile-rails-mode-map (kbd "C-c g") projectile-rails-mode-goto-map)
Similar to Projectile Rails there is a variable exposed for defining the prefix for the mode's keymap.
The name of the variable is projectile-rails-keymap-prefix
.
To attach the projectile-rails
keymap to the projectiles
keymap one can do:
(setq projectile-rails-keymap-prefix (kbd "C-c p C-r"))
Please note though that in order for this code to work it has to be called before the mode is required/loaded.
There's also integration with discover.el. The key that trigger the menu is s-r
(the “s” stands for Win/Command key).
Consider installing other Emacs packages that can help you working specifically with Rails projects.
Extension | Alternatives ————|—————————————————— erb | web-mode, mmm-mode, rhtml-mode haml | haml-mode slim | emacs-slim yaml | yaml-mode
Some of the Projectile Rails functions run rake
or rails
executables. If you are using a ruby version manager you might need to configure your Emacs to play nicely with it.
OS X users might want to look at exec-path-from-shell.
Pry's paging is not working in emacs. It should be disabled with Pry.config.pager = false
. Reference.
When projectile-rails-console
runs rails console using a pre-loader (zeus or spring) and pry's indent correction is enabled then pry will insert some ansi codes that are misinterpreted by comint-mode
. A workaround is to disable the indentation correction with Pry.config.correct_indent = false
. Reference. Issue.
Here's a list of the people that contributed to the projects. Many thanks! :)
Install cask if you haven't already, then:
$ cd /path/to/projectile-rails
$ cask
Run all tests with:
$ make test
For all of them to pass you will need the bundle
executable in your path.