diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index c25d4a889e..a5f32d1a2c 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,5 +1,17 @@ ## Rails 4.0.0 (unreleased) ## +* Allow to set class that will be used to run as a console, other than IRB, with `Rails.application.config.console=`. It's best to add it to `console` block. *Piotr Sarnacki* + + Example: + + # it can be added to config/application.rb + console do + # this block is called only when running console, + # so we can safely require pry here + require "pry" + config.console = Pry + end + * Add convenience `hide!` method to Rails generators to hide current generator namespace from showing when running `rails generate`. *Carlos Antonio da Silva* diff --git a/railties/guides/source/configuring.textile b/railties/guides/source/configuring.textile index 95f93101ab..451235d41d 100644 --- a/railties/guides/source/configuring.textile +++ b/railties/guides/source/configuring.textile @@ -122,6 +122,17 @@ WARNING: Threadsafe operation is incompatible with the normal workings of develo * +config.whiny_nils+ enables or disables warnings when a certain set of methods are invoked on +nil+ and it does not respond to them. Defaults to true in development and test environments. +* +config.console+ allows you to set class that will be used as console you run +rails console+. It's best to run it in +console+ block: + + +console do + # this block is called only when running console, + # so we can safely require pry here + require "pry" + config.console = Pry +end + + h4. Configuring Assets Rails 3.1, by default, is set up to use the +sprockets+ gem to manage assets within an application. This gem concatenates and compresses assets in order to make serving them much less painful. diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index 442771a929..825ea985fc 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -6,7 +6,7 @@ module Rails class Application class Configuration < ::Rails::Engine::Configuration attr_accessor :allow_concurrency, :asset_host, :asset_path, :assets, - :cache_classes, :cache_store, :consider_all_requests_local, + :cache_classes, :cache_store, :consider_all_requests_local, :console, :dependency_loading, :exceptions_app, :file_watcher, :filter_parameters, :force_ssl, :helpers_paths, :logger, :log_tags, :preload_frameworks, :railties_order, :relative_url_root, :secret_token, diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb index 432c81af88..e2956bbef6 100644 --- a/railties/lib/rails/commands/console.rb +++ b/railties/lib/rails/commands/console.rb @@ -42,8 +42,9 @@ def start puts "Loading #{Rails.env} environment (Rails #{Rails.version})" end - IRB::ExtendCommandBundle.send :include, Rails::ConsoleMethods - IRB.start + console = Rails.application.config.console || IRB + console::ExtendCommandBundle.send :include, Rails::ConsoleMethods + console.start end end end