Coder Social home page Coder Social logo

web-console's Introduction

Current version: 4.2.1 | Documentation for: v1.0.4 v2.2.1 v3.7.0

Web Console CI

Web Console is a debugging tool for your Ruby on Rails applications.

Installation

Add the following to your Gemfile:

group :development do
  gem 'web-console'
end

Usage

The web console allows you to create an interactive Ruby session in your browser. Those sessions are launched automatically in case of an error and can also be launched manually in any page.

For example, calling console in a view will display a console in the current page in the context of the view binding.

<% console %>

Calling console in a controller will result in a console in the context of the controller action:

class PostsController < ApplicationController
  def new
    console
    @post = Post.new
  end
end

The method is defined in Kernel and you can invoke it any application code.

Only one console invocation per request is allowed. If you happen to have multiple ones, WebConsole::DoubleRenderError will be raised.

Configuration

Web Console allows you to execute arbitrary code on the server. Therefore, be very careful who you give access to.

config.web_console.permissions

By default, only requests coming from IPv4 and IPv6 localhosts are allowed.

config.web_console.permissions lets you control which IP's have access to the console.

You can allow single IP's or whole networks. Say you want to share your console with 192.168.0.100:

class Application < Rails::Application
  config.web_console.permissions = '192.168.0.100'
end

If you want to allow the whole private network:

Rails.application.configure do
  config.web_console.permissions = '192.168.0.0/16'
end

Take a note that IPv4 and IPv6 localhosts are always allowed. This wasn't the case in 2.0.

config.web_console.whiny_requests

When a console cannot be shown for a given IP address or content type, messages such as the following is printed in the server logs:

Cannot render console from 192.168.1.133! Allowed networks: 127.0.0.0/127.255.255.255, ::1

If you don't want to see this message anymore, set this option to false:

Rails.application.configure do
  config.web_console.whiny_requests = false
end

config.web_console.template_paths

If you want to style the console yourself, then you can place style.css at a directory pointed by config.web_console.template_paths:

Rails.application.configure do
  config.web_console.template_paths = 'app/views/web_console'
end

You may want to check the templates folder at the source tree for the files you may override.

config.web_console.mount_point

Usually the middleware of Web Console is mounted at /__web_console. If there is a need to change the path, then you can specify it by config.web_console.mount_point:

Rails.application.configure do
  config.web_console.mount_point = '/path/to/web_console'
end

FAQ

Where did /console go?

The remote terminal emulator was extracted in its own gem which is no longer bundled with Web Console.

If you miss this feature, check out rvt.

Why do I constantly get unavailable session errors?

All of Web Console sessions are stored in memory. If you happen to run on a multi-process server (like Unicorn), you may encounter unavailable session errors while the server is still running. This is because a request may hit a different worker (process) that doesn't have the desired session in memory. To avoid that, if you use such servers in development, configure them so they serve requests only out of one process.

Passenger

Enable sticky sessions for Passenger on Nginx or Passenger on Apache to prevent unavailable session errors.

How to inspect local and instance variables?

The interactive console executes Ruby code. Invoking instance_variables and local_variables will give you what you want.

Why does the console only appear on error pages but not when I call it?

This can be happening if you are using Rack::Deflater. Be sure that WebConsole::Middleware is used after Rack::Deflater. The easiest way to do this is to insert Rack::Deflater as early as possible

Rails.application.configure do
  config.middleware.insert(0, Rack::Deflater)
end

Why am I getting an undefined method web_console?

Make sure your configuration lives in config/environments/development.rb.

Credits

web-console's People

Contributors

akirakoyasu avatar amatsuda avatar bronzle avatar causztic avatar dreyks avatar eileencodes avatar gsamokovarov avatar guilleiguaran avatar herminiotorres avatar jonatack avatar mikelkew avatar mishina2228 avatar p8 avatar pabloformoso avatar pat avatar patorash avatar paulanunda avatar pete-a avatar pjg avatar rafaelfranca avatar rosenfeld avatar ryandao avatar ryanwood avatar sambostock avatar sh19910711 avatar stanangeloff avatar timomeh avatar ttanimichi avatar voxik avatar wagenet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

web-console's Issues

Non default RoutingError display in development mode

With out the gem, the routing errors are displayed as follows:

image

With the gem, the routing errors are displayed as below:

image

The log file shows the following error

ActionController::RoutingError (No route matches [GET] "/ahhaha"):
  web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:22:in `middleware_call'
  web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.1.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.1.4) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.1.4) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.1.4) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.1.4) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.1.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  rack-rewrite (1.5.0) lib/rack/rewrite.rb:24:in `call'
  activesupport (4.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'

Add HTTP Authentication configuration

This is a feature request: add HTTP authentication. Over SSL it would make WebConsole suitable for production environment (with the proper secuirty considerations).

I'm using the following monkey patch at the moment:

# config/initializers/web_console_http_authentication.rb

require 'digest/md5'

module WebConsole
  class ApplicationController < ActionController::Base
    USERNAME, PASSWORD, REALM = ENV['WEB_CONSOLE_USERNAME'], ENV['WEB_CONSOLE_PASSWORD'], ENV['WEB_CONSOLE_REALM']

    raise "ENV['WEB_CONSOLE_USERNAME'] is not set" if USERNAME.blank?
    raise "ENV['WEB_CONSOLE_PASSWORD'] is not set" if PASSWORD.blank?
    raise "ENV['WEB_CONSOLE_REALM'] is not set"    if REALM.blank?

    USERS = { USERNAME => Digest::MD5.hexdigest([USERNAME, REALM, PASSWORD].join(":")) }

    before_action :http_digest_authentication

    private

    def http_digest_authentication
      authenticate_or_request_with_http_digest(REALM) do |username|
        USERS[username]
      end
    end
  end
end

What's wrong with server starting with web-console?

OS = Win 7 x64 Pro
I'm using railsinstaller
Rails 3.2.14
ruby 2.0.0p195 (2013-05-14) [i386-mingw32]
Bundler version 1.5.3

 group :development, :beta do
      gem 'better_errors'
      gem "binding_of_caller"
      gem 'meta_request'
      gem 'web-console-rails3'
 end

And I want to start server...

C:\Sites\skeletor>rails s
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-    3.2.14/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- pty     (LoadError)
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `block in require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in `load_dependency'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/web-console-rails3-1.0.4/lib/web_console/slave.rb:1:in `<top (required)>'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `block in require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in `load_dependency'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/web-console-rails3-1.0.4/lib/web_console.rb:4:in `<top (required)>'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/web-console-rails3-1.0.4/lib/web-console-rails3.rb:1:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/web-console-rails3-1.0.4/lib/web-console-rails3.rb:1:in `<top (required)>'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `each'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `block in require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `each'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler.rb:131:in `require'
    from C:/Sites/skeletor/config/application.rb:15:in `<top (required)>'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-3.2.14/lib/rails/commands.rb:53:in `require'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-3.2.14/lib/rails/commands.rb:53:in `block in <top (required)>'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-3.2.14/lib/rails/commands.rb:50:in `tap'
    from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-3.2.14/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Undefined variables/method input twice, crashes ruby

i tested this both on

gem 'web-console', '~> 2.0.0.beta3'

and

gem 'web-console', '~> 2.0.0.beta2'

I tried to input a variable which is not defined, twice, at the top of the console, before anything else

>> this_is_undefined
!! #<NameError: undefined local variable or method `this_is_undefined' for #<#<Class:0xba78886c>:0xba786a80>>
>> this_is_too 

it does nothing, and ruby crashes
this is the long log, something like this: http://pastebin.com/7icd33H7

this one also crashes

>> @balloon
=> 5
>> this_is_not_defined
!! #<NameError: undefined local variable or method `this_is_not_defined' for #<#<Class:0xba6f3b90>:0xba6f1dcc>>
>> another_one 

this one crashes too

>> cookies
=> #<ActionDispatch::Cookies::CookieJar:0xbb99dc00 @key_generator=#<ActiveSupport::CachingKeyGenerator:0xbbbba0c4 @key_generator=#<ActiveSupport::KeyGenerator:0xbbbba0d8 @secret="a183316a8015fa6feff7153f557902d5a3896ba7f57a95a7ee873e481234e9e2b3211c24399882cf15fd1f9a6d4158176cbbe7e0583a1c905670f6cf91b9012d", @iterations=1000>, @cache_keys=#<ThreadSafe::Cache:0xbbbba0b0 @backend={"encrypted cookie64"=>"v_\xC6\x8D\xA9j\xADf\x93\xC0\x13\v\x05t+\xD4\x85\xAB\xFD\xD9\x9B\xB1\x80`WUk\x9AK}\xE7\x80\xC2\x8A?\xE1\x8E\xAA\x95\xCB\xDC\xFC\x9B\xDE\x04\xCDR\xB5\x03\xFA\xF4\xE7\ae_#\xDA\n\x1A2\xF2\x16\x99\x03", "signed encrypted cookie64"=>"\xB9\x0F\x96\xCF%\xA5\x94\xFF\xDA1Q\xDDKZsr\xE4\by\x8E|1\xFD\xDC\xE7\xAEq\x15\xF4\x16\xCA\x84@$\x0F\xFA\xD9\x8B\xAD:b\x053\xEB\xBF^HE\x9E\xBB\x8E\x19\x92\xC2\xEC\xEC\xD0\x1D\xD1\x17\xD3\xB6~\x1E"}, @default_proc=nil>>, @set_cookies={"request_method"=>{:value=>"GET", :path=>"/"}, "_inventory_session"=>{:value=>"dnJTUG5xUWJpZENOU2J4UTBqUmhGeERqd3l5bFY3Z1lnTzVpaW9pWjYva0h4NWJYTURreTc1ODVlVDZKbjhPT0pjSnYxZFpvRUJhQ0lLVFEzT3BDUThwcGhJZ1lBYlpSRFNoay8vR2hXM2ZnV3pkN3hrNjcwcE9lQjBmUUFWbmlJRUkzZUJ2U1pRQk0rMGFVTWJoaUNRPT0tLWJ1cEJIR0lFcGFXSDc1UHFCMUVHVUE9PQ==--1bfe115c35614752c12a3a8779973e27fae8db37", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :defer=>false, :renew=>false, :id=>"e8f4afaaaf562d038fcbe8e42c0dbd96"}}, @delete_cookies={}, @host="localhost", @secure=false, @options={:signed_cookie_salt=>"signed cookie", :encrypted_cookie_salt=>"encrypted cookie", :encrypted_signed_cookie_salt=>"signed encrypted cookie", :secret_token=>nil, :secret_key_base=>"a183316a8015fa6feff7153f557902d5a3896ba7f57a95a7ee873e481234e9e2b3211c24399882cf15fd1f9a6d4158176cbbe7e0583a1c905670f6cf91b9012d", :upgrade_legacy_signed_cookies=>false, :serializer=>:json, :digest=>nil}, @cookies={"_inventory_session"=>"dnJTUG5xUWJpZENOU2J4UTBqUmhGeERqd3l5bFY3Z1lnTzVpaW9pWjYva0h4NWJYTURreTc1ODVlVDZKbjhPT0pjSnYxZFpvRUJhQ0lLVFEzT3BDUThwcGhJZ1lBYlpSRFNoay8vR2hXM2ZnV3pkN3hrNjcwcE9lQjBmUUFWbmlJRUkzZUJ2U1pRQk0rMGFVTWJoaUNRPT0tLWJ1cEJIR0lFcGFXSDc1UHFCMUVHVUE9PQ==--1bfe115c35614752c12a3a8779973e27fae8db37", "request_method"=>"GET"}, @committed=false, @encrypted=#<ActionDispatch::Cookies::EncryptedCookieJar:0xbb99d7a0 @parent_jar=#<ActionDispatch::Cookies::CookieJar:0xbb99dc00 ...>, @options={:signed_cookie_salt=>"signed cookie", :encrypted_cookie_salt=>"encrypted cookie", :encrypted_signed_cookie_salt=>"signed encrypted cookie", :secret_token=>nil, :secret_key_base=>"a183316a8015fa6feff7153f557902d5a3896ba7f57a95a7ee873e481234e9e2b3211c24399882cf15fd1f9a6d4158176cbbe7e0583a1c905670f6cf91b9012d", :upgrade_legacy_signed_cookies=>false, :serializer=>:json, :digest=>nil}, @encryptor=#<ActiveSupport::MessageEncryptor:0xbb99a640 @secret="v_\xC6\x8D\xA9j\xADf\x93\xC0\x13\v\x05t+\xD4\x85\xAB\xFD\xD9\x9B\xB1\x80`WUk\x9AK}\xE7\x80\xC2\x8A?\xE1\x8E\xAA\x95\xCB\xDC\xFC\x9B\xDE\x04\xCDR\xB5\x03\xFA\xF4\xE7\ae_#\xDA\n\x1A2\xF2\x16\x99\x03", @sign_secret="\xB9\x0F\x96\xCF%\xA5\x94\xFF\xDA1Q\xDDKZsr\xE4\by\x8E|1\xFD\xDC\xE7\xAEq\x15\xF4\x16\xCA\x84@$\x0F\xFA\xD9\x8B\xAD:b\x053\xEB\xBF^HE\x9E\xBB\x8E\x19\x92\xC2\xEC\xEC\xD0\x1D\xD1\x17\xD3\xB6~\x1E", @cipher="aes-256-cbc", @verifier=#<ActiveSupport::MessageVerifier:0xbb99a5f0 @secret="\xB9\x0F\x96\xCF%\xA5\x94\xFF\xDA1Q\xDDKZsr\xE4\by\x8E|1\xFD\xDC\xE7\xAEq\x15\xF4\x16\xCA\x84@$\x0F\xFA\xD9\x8B\xAD:b\x053\xEB\xBF^HE\x9E\xBB\x8E\x19\x92\xC2\xEC\xEC\xD0\x1D\xD1\x17\xD3\xB6~\x1E", @digest="SHA1", @serializer=ActiveSupport::MessageEncryptor::NullSerializer>, @serializer=ActiveSupport::MessageEncryptor::NullSerializer>>, @signed_or_encrypted=#<ActionDispatch::Cookies::EncryptedCookieJar:0xbb99d7a0 @parent_jar=#<ActionDispatch::Cookies::CookieJar:0xbb99dc00 ...>, @options={:signed_cookie_salt=>"signed cookie", :encrypted_cookie_salt=>"encrypted cookie", :encrypted_signed_cookie_salt=>"signed encrypted cookie", :secret_token=>nil, :secret_key_base=>"a183316a8015fa6feff7153f557902d5a3896ba7f57a95a7ee873e481234e9e2b3211c24399882cf15fd1f9a6d4158176cbbe7e0583a1c905670f6cf91b9012d", :upgrade_legacy_signed_cookies=>false, :serializer=>:json, :digest=>nil}, @encryptor=#<ActiveSupport::MessageEncryptor:0xbb99a640 @secret="v_\xC6\x8D\xA9j\xADf\x93\xC0\x13\v\x05t+\xD4\x85\xAB\xFD\xD9\x9B\xB1\x80`WUk\x9AK}\xE7\x80\xC2\x8A?\xE1\x8E\xAA\x95\xCB\xDC\xFC\x9B\xDE\x04\xCDR\xB5\x03\xFA\xF4\xE7\ae_#\xDA\n\x1A2\xF2\x16\x99\x03", @sign_secret="\xB9\x0F\x96\xCF%\xA5\x94\xFF\xDA1Q\xDDKZsr\xE4\by\x8E|1\xFD\xDC\xE7\xAEq\x15\xF4\x16\xCA\x84@$\x0F\xFA\xD9\x8B\xAD:b\x053\xEB\xBF^HE\x9E\xBB\x8E\x19\x92\xC2\xEC\xEC\xD0\x1D\xD1\x17\xD3\xB6~\x1E", @cipher="aes-256-cbc", @verifier=#<ActiveSupport::MessageVerifier:0xbb99a5f0 @secret="\xB9\x0F\x96\xCF%\xA5\x94\xFF\xDA1Q\xDDKZsr\xE4\by\x8E|1\xFD\xDC\xE7\xAEq\x15\xF4\x16\xCA\x84@$\x0F\xFA\xD9\x8B\xAD:b\x053\xEB\xBF^HE\x9E\xBB\x8E\x19\x92\xC2\xEC\xEC\xD0\x1D\xD1\x17\xD3\xB6~\x1E", @digest="SHA1", @serializer=ActiveSupport::MessageEncryptor::NullSerializer>, @serializer=ActiveSupport::MessageEncryptor::NullSerializer>>>
>> unknown
!! #<NameError: undefined local variable or method `unknown' for #<#<Class:0xbb998700>:0xbb996950>>
>> another_unknown 

btw, thanks before ๐Ÿ˜ƒ

Put a link to binding_of_caller repo in README

Hi,

is it possible you could put a link to the binding of caller repo in the README? Primarily for promulgating the use of binding of caller into other interesting projects, and also to let interested parties know about some of the technology that underlies the webconsole featuers,

Thanks!

John

Test agains multiple Rails versions

We need to better test the gem across the Rails 4 minor (4-0-stable, 4-1-stable, latest-gratest, etc.) versions. We would need different gemfiles for the test application and test agains them on travis. See coffee-rails, for example.

@ryandao do you have time this those days?

Considerations for production use?

Hey, what I've needed a million times in the past was a production console to fix issues with a quick command when I was away from my computer.

How safe do you consider this console be for production use? My applications already have an admin interface that allows me to administrate the database (and, if I wanted to, destroy all records).

If I mount the console protected by both an administrator session, an additional http password (of course it's all SSL encrypted), what additional risks am I exposing myself to as compared to my admin interface?

I understand that an attacker with access to my admin interface, may be able to use the console to gain access to the machine. Is there anything else to consider?

undefined method `web_console'

I get the following error when ever I try to use the web_console config parameters in application.rb OR development.rb OR in a separate initializer file.

NoMethodError: undefined method `web_console' for #<Rails::Application::Configuration:0x000000061694b8>
    from /home/user1/.rvm/gems/ruby-2.0.0-p451/gems/railties-4.1.4/lib/rails/railtie/configuration.rb:95:in `method_missing'
    from (irb):3
    from /home/user1/.rvm/gems/ruby-2.0.0-p451/gems/railties-4.1.4/lib/rails/commands/console.rb:90:in `start'
    from /home/user1/.rvm/gems/ruby-2.0.0-p451/gems/railties-4.1.4/lib/rails/commands/console.rb:9:in `start'

The web-console shows up in exception pages and if I add the <%= console %> in views. I can't seem to access the console by going to /console URL.

Disable auto focus?

Hi

If I have web-console on every page, it steals focus. Is it possible for the focus to be defaulted (or configurable) to the page?

Has this been discussed elsewhere?

Post 2.0 Maintainance

A couple of things got out of hand for 2.0 stable. README.markdown and CHANGELOG.markdown are one of them as well. Let's get them in shape again!

I'm creating this issue here so I can track the progress and give visibility to the community. If you wanna help out, you are quite welcome to :)

Readme

  • Single GIF with better quality and better examples of the console.
  • Documentation about <% console %> view helper.
  • Documentation about console controller helper.
  • Better wording and grammar.

Changelog

  • Collect all contributors changes.
  • Change the changelog format, so we credit contributors for features and bug fixes.

Release Notes

Even the release notes need some love, IMO. We turned the project around during the summers. We can describe why and how we did that.

config.web_console.templates_path is not picked up

I'd like to style the console from being positioned 'fixed' to being positioned 'relative'. I have tried to pull in styles as mentioned in the ReadMe but style.css is never picked up, or does not overwrite the default styles.

Rails 4.2

Typing "c" causes segfault

I suppose this is kind of a ruby bug more than web-console but anyway...

When typing just "c" in the console i get a segfault. Same thing happens with just "l" so I assume it's to do with debugger commands

Rails: 4.2.0
Web-console: master (3775fe0)
Ruby: 2.1.3p242

partial trace:

Started PUT "/console/repl_sessions/c17abb55e84469f3590b438f3042ae73" for 127.0.0.1 at 2015-02-27 17:04:04 +0000
/Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21: [BUG] Segmentation fault at 0x00000000000090
ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/CrashReporter
     * /Library/Logs/CrashReporter
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.

-- Control frame information -----------------------------------------------
c:0073 p:---- s:0391 e:000390 CFUNC  :open
c:0072 p:0021 s:0388 E:000a90 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21
c:0071 p:0046 s:0384 E:0025e0 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/bundler/gems/web-console-3775fe0637d5/lib/web_console/integration/ [FINISH]
c:0070 p:0005 s:0380 e:000379 EVAL   /Users/admin/git/my_app/app/views/layouts/application.html.haml:12 [FINISH]
c:0069 p:---- s:0378 e:000377 CFUNC  :eval
c:0068 p:0013 s:0374 e:000372 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/bundler/gems/web-console-3775fe0637d5/lib/web_console/evaluator.rb
c:0067 p:0011 s:0368 e:000367 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/bundler/gems/web-console-3775fe0637d5/lib/web_console/session.rb:4
c:0066 p:0062 s:0364 e:000362 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/bundler/gems/web-console-3775fe0637d5/lib/web_console/middleware.r
c:0065 p:0056 s:0354 e:000353 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/bundler/gems/web-console-3775fe0637d5/lib/web_console/middleware.r
c:0064 p:0098 s:0340 e:000339 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.10.0.279/lib/new_relic/agent/instrumentation/m
c:0063 p:0011 s:0332 e:000331 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/actionpack-4.2.0/lib/action_dispatch/middleware/show_exceptio
c:0062 p:0098 s:0327 e:000326 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.10.0.279/lib/new_relic/agent/instrumentation/m
c:0061 p:0076 s:0319 E:0001f8 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/railties-4.2.0/lib/rails/rack/logger.rb:38
c:0060 p:0011 s:0312 e:000311 BLOCK  /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/railties-4.2.0/lib/rails/rack/logger.rb:20
c:0059 p:0007 s:0310 e:000309 BLOCK  /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:68
c:0058 p:0016 s:0308 e:000307 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:26
c:0057 p:0011 s:0303 e:000302 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:68
c:0056 p:0042 s:0299 e:000298 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/railties-4.2.0/lib/rails/rack/logger.rb:20
c:0055 p:0098 s:0294 e:000293 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.10.0.279/lib/new_relic/agent/instrumentation/m
c:0054 p:0032 s:0286 e:000285 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/actionpack-4.2.0/lib/action_dispatch/middleware/request_id.rb
c:0053 p:0098 s:0282 e:000281 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.10.0.279/lib/new_relic/agent/instrumentation/m
c:0052 p:0091 s:0274 e:000273 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rack-1.6.0/lib/rack/methodoverride.rb:22
c:0051 p:0098 s:0269 e:000268 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/newrelic_rpm-3.10.0.279/lib/new_relic/agent/instrumentation/m
c:0050 p:0024 s:0261 e:000260 METHOD /Users/admin/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rack-1.6.0/lib/rack/runtime.rb:18

production using

Is there any suggestions how to use it on production? Maybe generate own controller and use it with CanCan abilities?

Thanks for this nice gem!

web-console markup & javascript is outside the <html> element of the page

...and it confuses Capybara.

When I have web-console installed, and my Capybara test hits a Rails error page, I get this super confusing error message:

  1) index does the thing
     Failure/Error: expect(page).to have_content('a thing')
     Capybara::Ambiguous:
       Ambiguous match, found 2 elements matching xpath "/html"
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/finders.rb:38:in `block in find'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/base.rb:80:in `synchronize'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/finders.rb:30:in `find'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/document.rb:23:in `text'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/queries/text_query.rb:26:in `resolve_for'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/matchers.rb:454:in `block in assert_text'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/base.rb:84:in `synchronize'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/node/matchers.rb:453:in `assert_text'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/session.rb:676:in `block (2 levels) in <class:Session>'
     # /Users/steampunk/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/rspec/matchers.rb:64:in `matches?'
     # ./spec/features/index_spec.rb:6:in `block (2 levels) in <top (required)>'

This error occurs because web-console's HTML elements (including script tags) are placed at the bottom of the file, outside the </html>. As a result, Capybara thinks there are two webpages in the file, and gives up.

Is it possible to move those elements inside the html tag?

can't go to every stack frame

This is my stacktrace. For some entries I'm able to step into the stack frame by clicking its file name, and for some others I can't. Just see self.class on each frame.

active_hash (1.4.0) lib/active_hash/base.rb:190:in `find'   # Class - OK
app/models/disk.rb:23:in `size_plan='   # Disk - OK
/home/nowaker/.rvmruby (2.1.2) bundler/gems/rails-42e69c352fc5/activemodel/lib/active_model/model.rb:80:in `public_send'
/home/nowaker/.rvmruby (2.1.2) bundler/gems/rails-42e69c352fc5/activemodel/lib/active_model/model.rb:80:in `block in initialize'
/home/nowaker/.rvmruby (2.1.2) bundler/gems/rails-42e69c352fc5/activemodel/lib/active_model/model.rb:79:in `each'
/home/nowaker/.rvmruby (2.1.2) bundler/gems/rails-42e69c352fc5/activemodel/lib/active_model/model.rb:79:in `initialize'
app/models/wvm/machine.rb:27:in `new'   # MachinesController - WRONG
app/models/wvm/machine.rb:27:in `create'   # MachinesController - WRONG
app/models/forms/new_machine.rb:18:in `save'   # MachinesController - WRONG
app/controllers/machines_controller.rb:17:in `block in create'   # MachinesController - OK
app/controllers/application_controller.rb:9:in `handle_errors'   # MachinesController - OK
app/controllers/machines_controller.rb:16:in `create'   # MachinesController - OK
/home/nowaker/.rvmruby (2.1.2) bundler/gems/rails-42e69c352fc5/actionpack/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
(other rails frames)

In frames marked as WRONG I'm not able to access the local variables. For example, after clicking machine.rb:27, I see "extracted source" as:

    machine = build_new_machine new_machine

    machine.create_disk ::Disk.new \   # highlighted here
        size_plan: new_machine.plan.storage,
        type: new_machine.plan.storage_type

I should be able to access new_machine or machine. Apparently web console doesn't set an appropriate context - it switches to MachineController, which is wrong.

>> machine
!! #<NameError: undefined local variable or method `machine' for #<MachinesController:0x007fc301010ce0>>
>> new_machine
!! #<NameError: undefined local variable or method `new_machine' for #<MachinesController:0x007fc301010ce0>>

Dragging the resize bar downwards

On an error page, when the console buffer exceeds the size of the frame, shrinking it with the resize bar anchors it to the line currently at the top of the frame, when it should really be anchored to the bottom.

This means that, for instance, if you fill the console buffer with a bunch of stuff (using methods usually works), drag the resize bar up to make the frame bigger, then drag it down again to its previous size, you'll be in a different position than you were before, without doing any scrolling. Basically the behavior is inconsistent between dragging up and dragging down. Occurs in Chrome, Firefox, and IE11.

There's some other bugs I noticed, but seeing as this is in beta and under active development, I assume those will be fixed in short order. However I thought this usability issue had the potential to be overlooked.

Extract the terminal part into optional standalone gem

I think most of the people are confused with the terminal part of Web Console. As much as I love web-console 1.0 and its quirkiness I think it gotta go into its own project, if it is to be developed any further.

Its hard do document of the different aspects of Web Console as is. Some of the settings are specific only to the terminal part, other are affecting all the consoles. Also, with the recent security fixes, if the terminal isn't run on a long-polling capable server (most of the development ones we use aren't) its noticeably slower.

People also weren't using web-console 1.0 that much. Some numbers from RubyGems to back it up:

Version Downloads
2.0.0.beta4 22,241
2.0.0.beta3 13,804
2.0.0.beta2 1,481
2.0.0.beta1 111
1.0.4 2,787
1.0.3 978
1.0.2 486
1.0.1 486
1.0.0 454

I'm sure that the majority of the version 2 downloads are coming from Rails 4.2 beta installs, but nevertheless, I don't wanna introduce this burden to all the installation, if its not useful. So I propose to move it to an own gem and mention it in the README, if someone looks for the old functionality.

If you guys think its too late to pull it out now, we can do it for version 3, otherwise, if I have @dhh blessing I can remove it for 2.0 stable.

Can't evaluate anything from the shell - 500 or 404 errors

First I got 500 errors with no stacktrace and then I added 0.0.0.0 to whitelisted_ips (it seems to be detecting the request from IPV6 ::1) and the error changed to 404 and now I get a stacktrace:

Started PUT "/console/repl_sessions/b106fd6a16f9b78a51dab5b770f9d13d" for ::1 at 2014-12-22 17:32:57 -0200

ActionController::RoutingError (No route matches [PUT] "/console/repl_sessions/b106fd6a16f9b78a51dab5b770f9d13d"):
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:22:in `middleware_call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.0) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.0) lib/rails/engine.rb:518:in `call'
  railties (4.2.0) lib/rails/application.rb:164:in `call'
  rack (1.6.0) lib/rack/content_length.rb:15:in `call'
  puma (2.9.1) lib/puma/server.rb:490:in `handle_request'
  puma (2.9.1) lib/puma/server.rb:361:in `process_client'
  puma (2.9.1) lib/puma/server.rb:254:in `block in run'
  puma (2.9.1) lib/puma/thread_pool.rb:92:in `call'
  puma (2.9.1) lib/puma/thread_pool.rb:92:in `block in spawn_thread'


  Rendered /home/rodrigo/.rvm/gems/ruby-2.1.5/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/_trace.text.erb (0.4ms)
  Rendered /home/rodrigo/.rvm/gems/ruby-2.1.5/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/routing_error.text.erb (3.0ms)

Any ideas?

Does not allow page refresh in Firefox

I am using Firefox (32.0.3) under Mac OS X. Currently when I type cmd+R, the error page with console does not reload, unlike the expected behavior in Chrome. Instead a plain "r" is entered into the console.

No `Module#prepend_features` for Ruby 1.9.3

We have to support Ruby 1.9 as long as Rails does. Ruby 1.9 doesn't have Module#prepend_features.

Currently, our CI build for 1.9.3 is failing, so we have to use a different approach in lib/web_console/exception_extension.rb. Maybe put our backtrace extraction code in lib/action_dispatch/exception_wrapper.rb?

Console on the template missing error pages

Continuation of a discussion in #70.

As an aside, I'd love to see the console be available on the "template missing" exception screen. So that probably means turning that screen into using the same setup as any other exception.

It would be great to have the backtrace there. Then you can see where you are calling the missing template, and if itโ€™s programmatically youโ€™re doing it, itโ€™ll help to have the debug console there to figure out whatโ€™s up.

It needs to be implemented in Rails itself and backported back with a console attached, at least until #69 is merged.

IP Whitelist is not enforced on exceptions

Rails 4.2, web_console 2.0.0 if exception occures, IP whitelist is ignored and console is displayed no matter the user IP.

There's a second initialization of console_session variable, not wrapped in "if allowed?"

In lib/action_dispatch/debug_exceptions.rb (around line 54):

if env['action_dispatch.show_detailed_exceptions']
request = Request.new(env)
if allowed?(request)
console_session = WebConsole::REPLSession.create(
binding: wrapper.exception.bindings.first,
binding_stack: exception.bindings
)
end

traces = wrapper.traces
extract_sources = wrapper.extract_sources
console_session = WebConsole::REPLSession.create(
binding: exception.bindings.first,
binding_stack: exception.bindings
)

"Properly" teardown the console on navigation/close

This probably goes hand-in-hand with #82.

Specifically, since turbo-links is enabled on the default stack, we should make sure we don't keep any event listeners around on navigation or when the user closes the console.

If possible, we should also try to attach the event listeners on our container, instead of on the whole document. That way, the hot keys will only be active when the console is focused and it reduces the chance of leaking listeners on navigation.

'method_missing': undefined method when using guard gem running tests

When running guard I get following error:

gems/railties-4.2.2/lib/rails/railtie/configuration.rb:95:in method_missing': undefined methodweb_console' for #Rails::Application::Configuration:0xba8024b4 (NoMethodError)

This is with latest 2.1.3 GEM.
I saw #33 but the issue mentioned there and the resolve seems to be a newer version.

cannot paste in console ?

Hi there. Just a quick question. As we are not able to (CMD+v) in the web console, is this feature intentionally disabled or do have plans in near future?

Thanks

Segmentation Fault on Rails 4.1.7 && not working in Firefox

I got segmentation fault when I enter an instance variable, let's say @user which is available in that controller. <%= console %> is called inside payment.html.erb

ruby
def payment
@user = current_user
end


calling `@user` works but when I start calling `user` which does not return me a `nil` but an segmentation fault and killed my server process. Btw my database is mongoid, does that causes the error? Or web console only support ActiveRecord?

Web console doesn't show up in Firefox but it's working in Chrome. What are the possibilities that it's not rendering in Firefox?

``` ruby```
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21: [BUG] Segmentation fault at 0x00000000000000
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/CrashReporter
     * /Library/Logs/CrashReporter
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.

-- Control frame information -----------------------------------------------
c:0033 p:---- s:0195 e:000194 CFUNC  :open
c:0032 p:0021 s:0192 E:000af0 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21
c:0031 p:0046 s:0188 E:002170 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/integration/cruby.rb:28 [FINISH]
c:0030 p:0005 s:0184 e:000183 EVAL   /Users/yoonwaiyan/Documents/workspace/zorage/app/views/dashboard/schedule.html.erb:112 [FINISH]
c:0029 p:---- s:0182 e:000181 CFUNC  :eval
c:0028 p:0013 s:0178 e:000176 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/evaluator.rb:18
c:0027 p:0011 s:0172 e:000171 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/session.rb:49
c:0026 p:0062 s:0168 e:000166 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/middleware.rb:90
c:0025 p:0056 s:0158 e:000157 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/middleware.rb:32
c:0024 p:0011 s:0144 e:000143 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/show_exception
c:0023 p:0081 s:0139 e:000138 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:38
c:0022 p:0011 s:0132 e:000131 BLOCK  /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:20
c:0021 p:0007 s:0130 e:000129 BLOCK  /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:68
c:0020 p:0016 s:0128 e:000127 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:26
c:0019 p:0011 s:0123 e:000122 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:68
c:0018 p:0042 s:0119 e:000118 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:20
c:0017 p:0080 s:0114 e:000113 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/quiet_assets-1.0.3/lib/quiet_assets.rb:23
c:0016 p:0032 s:0110 e:000109 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/request_id.rb:
c:0015 p:0075 s:0106 e:000105 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:21
c:0014 p:0024 s:0101 e:000100 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/runtime.rb:17
c:0013 p:0035 s:0092 e:000091 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/cache/strategy/local_ca
c:0012 p:0056 s:0087 e:000086 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/lock.rb:17
c:0011 p:0094 s:0080 e:000079 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/static.rb:84
c:0010 p:0011 s:0074 e:000073 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/sendfile.rb:112
c:0009 p:0060 s:0064 e:000063 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/engine.rb:514
c:0008 p:0039 s:0060 e:000059 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/application.rb:144
c:0007 p:0056 s:0056 e:000055 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/lock.rb:17
c:0006 p:0011 s:0049 e:000048 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/content_length.rb:14
c:0005 p:0284 s:0040 e:000039 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60
c:0004 p:0185 s:0028 e:000027 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138
c:0003 p:0310 s:0018 E:000c98 METHOD /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94
c:0002 p:0089 s:0007 E:000d10 BLOCK  /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/server.rb:295 [FINISH]
c:0001 p:---- s:0002 e:000001 TOP    [FINISH]

/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/application.rb:144:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/engine.rb:514:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/sendfile.rb:112:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/static.rb:84:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/request_id.rb:21:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/quiet_assets-1.0.3/lib/quiet_assets.rb:23:in `call_with_quiet_assets'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:20:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:68:in `tagged'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:26:in `tagged'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/tagged_logging.rb:68:in `block in tagged'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:20:in `block in call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/rack/logger.rb:38:in `call_app'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.1.7/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/middleware.rb:32:in `call'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/middleware.rb:90:in `update_repl_session'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/session.rb:49:in `eval'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/evaluator.rb:18:in `eval'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/evaluator.rb:18:in `eval'
/Users/yoonwaiyan/Documents/workspace/zorage/app/views/dashboard/schedule.html.erb:112:in `_app_views_dashboard_schedule_html_erb___1804175559776679697_70328726489300'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/web-console-2.1.1/lib/web_console/integration/cruby.rb:28:in `set_backtrace_with_binding_of_caller'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21:in `callers'
/Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/binding_of_caller-0.7.2/lib/binding_of_caller/mri2.rb:21:in `open'

-- C level backtrace information -------------------------------------------
0   ruby                                0x0000000101fe2780 rb_vm_bugreport + 144
1   ruby                                0x0000000101e956e1 report_bug + 305
2   ruby                                0x0000000101e955a4 rb_bug + 180
3   ruby                                0x0000000101f652ac sigsegv + 156
4   libsystem_platform.dylib            0x00007fff92c62f1a _sigtramp + 26
5   ruby                                0x0000000101fd59ef vm_make_env_object + 31
6   ???                                 0x0000000105aaf650 0x0 + 4390057552

-- Other runtime information -----------------------------------------------

* Loaded script: bin/rails

* Loaded features:

    0 enumerator.so
    1 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin14.0/enc/encdb.bundle
    2 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin14.0/enc/trans/transdb.bundle
    3 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin14.0/rbconfig.rb
    4 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/compatibility.rb
    5 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/defaults.rb
    6 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/deprecate.rb
    7 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/errors.rb
    8 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/version.rb
    9 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/requirement.rb
   10 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/platform.rb
   11 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/basic_specification.rb

...
  442 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/core_ext/enumerable.rb
  443 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/active_model_helper.rb
  444 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/asset_url_helper.rb
-3.4.1/lib/devise/delegator.rb
...
 2290 /Users/yoonwaiyan/Documents/workspace/zorage/config/environment.rb
 2291 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.7/lib/rails/backtrace_cleaner.rb
 2292 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/message_encryptor.rb
 2293 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/renderer/renderer.rb
 2294 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/flows.rb
 2295 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/renderer/abstract_renderer.rb
 2296 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/renderer/template_renderer.rb
 2297 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/buffers.rb
 2298 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/renderer/partial_renderer.rb
 2299 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/devise-3.4.1/lib/devise/parameter_sanitizer.rb
 2300 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags.rb
 2301 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/base.rb
 2302 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/text_field.rb
 2303 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/email_field.rb
 2304 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activemodel-4.1.7/lib/active_model/errors.rb
 2305 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/password_field.rb
 2306 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/multipart/parser.rb
 2307 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/devise-3.4.1/lib/devise/parameter_filter.rb
 2308 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/gems/state_machine-88e45a1b1622/lib/state_machine/integrations/active_model/observer.rb
 2309 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/gems/state_machine-88e45a1b1622/lib/state_machine/integrations/active_model/observer_update.rb
 2310 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/template/error.rb
 2311 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/number_helper/number_converter.rb
 2312 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/number_helper/number_to_currency_converter.rb
 2313 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/number_helper/number_to_rounded_converter.rb
 2314 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/number_helper/number_to_delimited_converter.rb
 2315 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/checkable.rb
 2316 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/check_box.rb
 2317 /Users/yoonwaiyan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.1.7/lib/action_view/helpers/tags/hidden_field.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

[1]    64820 abort      rails s -p 3001

web-console and Rack::Deflater

When using Rack::Deflater the console doesn't appear. Obviously cause it is trying to attach itself to a gzipped body.

The solution is to include Rack::Deflater as early as possible

#config/application.rb
class Application < Rails::Application
  config.middleware.insert(0, Rack::Deflater)
end

probably should be noted in FAQ section

Dump into console when an exception happens?

From David Heinemeier Hansson:

"This looks pretty cool! My preferred usage of this would be if we could automatically dump you into a console when an exception happens. Is that possible? If so, I would like to include by default, but restrict to dev environment."

Sounds this possible? ๐Ÿ˜„

How to run it in beta env?

Hi, we use 3 environments - development, beta and production - and I want this console to run in beta env. How can I allow it?

Filter chain halted as :prevent_unauthorized_requests! rendered or redirected 401 from localhost

Trying to access http://127.0.0.1:3000/console or http://localhost:3000/console I get a 401 status code from Puma server (also in Webrick)

Started GET "/console" for ::1 at 2014-09-07 17:37:40 +0200
Processing by WebConsole::ConsoleSessionsController#index as HTML
  Rendered text template (0.0ms)
Filter chain halted as :prevent_unauthorized_requests! rendered or redirected
Completed 401 Unauthorized in 3ms (Views: 0.6ms | ActiveRecord: 0.0ms)
::1 - - [07/Sep/2014:17:37:40 +0200] "GET / HTTP/1.1" 401 - 0.0133

Seen the server request and response I guess that ::1 l0 is not been translated to 127.0.0.1 as first 127.0.0.0/8 loopback IP. Using OS X Yosemite Preview7, Ruby 2.1.2, Rails4.2.0.beta1 and it's possible that the IPv6 notation is causing this problem.

On application.rb I have:

config.web_console.whitelisted_ips = %w( 127.0.0.1 )  

development.rb:

config.web_console.automount = true

I see on the engine.rb that the defaultwhitelisted_ip is 127.0.0.1. I tried also adding my own IP, and the full network with a mask but I always get the 401.

Sure that I'm missing something. Any ideas.

Spring::MissingApplication when in a Rails engine

I'm trying out web-console in a Rails engine.

The error page and the console command work well, showing up the web console.

But when auto-mounting and going to the /console URL, an error shows up: Spring::MissingApplication

I have added config.web_console.automount = true to /test/dummy/config/environments/development.rb

I have grabbed a screenshot:
screenshot

hide logs

Is it possible just to hide those logs:

Rendered /Users/gangam/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/web-console-2.1.2/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.4ms)

undefined method `web_console' for #<Rails::Application::configuration

I have this on my rails configuration
config.web_console.whitelisted_ips = '10.11.50.22'
which works as supposed, but i can't run test unless I comment it.

So:
shell> rspec
I get:
undefined method `web_console' for #Rails::Application::Configuration:0x00000002305190 (NoMethodError)

I opened an issue on rspec as well.

Return key not working

I created an empty Rails 4.2 application using rails new.
I access http://localhost:3000/a to get a 404 error and open the console.
I can type anything but nothing happens when I press the return key. It's completely ignored and the cursor keeps staying on the same line.
I tested that with Firefox 34.0 and Opera 26.0 on Ubuntu 12.04.5, Ruby 2.1.0 and Ruby 2.2.0.
Another possibly related strange behaviour is that no console appears if I add console into a controller (rails g controller welcome, action index) or <%= console %> in a view (welcome/index.html.erb).

cannot execute code due to alleged SyntaxError

It's legal Ruby code, not sure why it's hitting SyntaxError in web-console.

>> @machines.map(&:storage)
!! #<SyntaxError: /home/nowaker/projekty/ruby/virtkick-webapp/app/controllers/machine_controller.rb:6: syntax error, unexpected end-of-input, expecting ')' @machines.map( ^>

Normal console:

2.1.2 :003 > @machines = Machine.all; nil
 => nil 
2.1.2 :004 > @machines.map(&:storage)
 => [[#<Machine::Storage:0x00000004b08c50 @attributes={"allocation"=>3485696, "capacity"=>21474836480, "type"=>0, "format"=>"qcow2", "path"=>"/var/lib/libvirt/images/test.img", "image"=>"test.img", "storage"=>"default", "dev"=>"vda"}, @prefix_options={}, @persisted=true>]] 

Errno::ENOENT in WebConsole::ConsoleSessionsController#index

hi guys, I just included gem in gemfile, bundle and rails s, and the localhost:3000/console throws me this....

is this an issue, or just my fault? cannot google it, therefore its here, sry if not issue :)

Errno::ENOENT in WebConsole::ConsoleSessionsController#index
No such file or directory - /Users/Redrick/Projects/intranet_server/bin/rails console

Rails.root: /Users/Redrick/Projects/intranet_server

web-console (1.0.2) lib/web_console/slave.rb:25:in `spawn'
web-console (1.0.2) lib/web_console/slave.rb:25:in `block in initialize'
web-console (1.0.2) lib/web_console/slave.rb:124:in `block in using_term'
<internal:prelude>:10:in `synchronize'
web-console (1.0.2) lib/web_console/slave.rb:122:in `using_term'
web-console (1.0.2) lib/web_console/slave.rb:24:in `initialize'
web-console (1.0.2) app/models/web_console/console_session.rb:45:in `new'
web-console (1.0.2) app/models/web_console/console_session.rb:45:in `initialize'
web-console (1.0.2) app/models/web_console/console_session.rb:40:in `new'
web-console (1.0.2) app/models/web_console/console_session.rb:40:in `create'
web-console (1.0.2) app/controllers/web_console/console_sessions_controller.rb:14:in `index'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:413:in `_run__4586300339362692703__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/railtie/configurable.rb:30:in `method_missing'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
rack-cors (0.2.8) lib/rack/cors.rb:54:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__2748503733985229373__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
thin (1.5.1) lib/thin/connection.rb:79:in `catch'
thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
thin (1.5.1) lib/thin/connection.rb:54:in `process'
thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run_machine'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
thin (1.5.1) lib/thin/server.rb:159:in `start'
rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
rack (1.5.2) lib/rack/server.rb:264:in `start'
railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
railties (4.0.0) lib/rails/commands.rb:73:in `tap'
railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
script/rails:6:in `require'
script/rails:6:in `<main>'

Keyboard hijacking

Whenever I get an exception on Rails 4.2, the keyboard immediately shifts to web console. While this might be useful when opening google, for me it is terribly annoying in this case because usually I just skim over the exception, know what to fix, skip to the editor, fix it and try to refresh, only to realize that ctrl+r does not work anymore. I think this is the more common case opposed to wanting to dive into the live console right away, so I'd suggest to remove the autofocus behaviour.

Bootstrap 3 clobbers console

I have an on-page console, and bootstrap has some pretty liberal css that really messes up the display

console

(ignore the thumbs above the console...I just captured too much)

I added this to application.css.scss to override bootstrap's css:

div#console, [class^='console-'] {
  padding: 0;
  background: none repeat scroll 0% 0% #333;
  margin: 0;
  font-size: 11px;
  color: #1ad027;
  overflow: auto;
  pre {
    border: 0;
    white-space: pre-wrap;
  }
}

and I ended up with this

console2

I'm not sure what the right approach is here, but I thought I'd throw this out there.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.