-
Notifications
You must be signed in to change notification settings - Fork 437
Home
See the Security page.
Better Errors saves the most recent error page displayed at /__better_errors
.
This can be handy if you aren't able to see the error page served up when the exception occurred, eg. if the errored request was an AJAX or curl request.
If your Rails app is running from a shared folder in a VM, the path to your source files from Rails' perspective could be different to the path seen by your editor.
You can adjust the path used to generate open-in-editor links by putting this snippet of code in an initializer:
if defined? BetterErrors
BetterErrors.editor = proc { |full_path, line|
full_path = full_path.sub(Rails.root.to_s, your_local_path)
"my-editor://open?url=file://#{full_path}&line=#{line}"
}
end
If you're working on a project with other developers, your base path may be not be the same as the other developers'.
You can use an environment variable to work around this by replacing your_local_path
in the snippet above with ENV["BETTER_ERRORS_PROJECT_PATH"]
and starting your Rails server like this:
$ BETTER_ERRORS_PROJECT_PATH=/path/to/your/app rails server
RubyMine on OS X:
- Grab the Zip file attached to the post here
- Place the app from the zip file on your machine
- In RubyMine go to Tools -> Create Command-line Launcher; Name: RubyMine Url Handler; Path: /path/to/where/you/put/script/from/zip/file
- In development.rb put
BetterErrors.editor='rubymine://open?url=file://%{file}&line=%{line}'
Note: only confirmed with RubyMine 5.4
Additional information can be found in this thread out on Jetbrains message boards
if defined? BetterErrors
BetterErrors.editor = proc { |full_path, line|
"x-mine://open?file=#{full_path}&line=#{line}"
}
end
Users of iTerm and vim (cli version) on OS X can follow the instructions provided at https://github.com/phallstrom/urlscheme_vim_in_iterm to configure Better Errors to open files in a new iTerm session using vim.
To open the files when using Vagrant use the vagrant-host-path gem.
The complete example will look like this:
# Allow usage on Vagrant
if defined? BetterErrors
# Opening files
BetterErrors.editor = proc { |full_path, line|
full_path = full_path.sub(Rails.root.to_s, ENV["VAGRANT_HOST_PATH"])
"subl://open?url=file://#{full_path}&line=#{line}"
}
# Allowing host
host = ENV["SSH_CLIENT"].match(/\A([^\s]*)/)[1]
BetterErrors::Middleware.allow_ip! host if [:development, :test].member?(Rails.env.to_sym) && host
end