aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/railtie.rb3
-rw-r--r--activerecord/lib/active_record/railties/console_sandbox.rb (renamed from railties/lib/rails/console/sandbox.rb)0
-rw-r--r--railties/lib/rails/application.rb3
-rw-r--r--railties/lib/rails/railtie.rb4
-rw-r--r--railties/test/application/console_test.rb18
5 files changed, 21 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb
index 276f674cc3..bae2ded244 100644
--- a/activerecord/lib/active_record/railtie.rb
+++ b/activerecord/lib/active_record/railtie.rb
@@ -29,7 +29,8 @@ module ActiveRecord
# When loading console, force ActiveRecord::Base to be loaded
# to avoid cross references when loading a constant for the
# first time. Also, make it output to STDERR.
- console do
+ console do |sandbox|
+ require "active_record/railties/console_sandbox" if sandbox
ActiveRecord::Base.logger = Logger.new(STDERR)
end
diff --git a/railties/lib/rails/console/sandbox.rb b/activerecord/lib/active_record/railties/console_sandbox.rb
index 65a3d68619..65a3d68619 100644
--- a/railties/lib/rails/console/sandbox.rb
+++ b/activerecord/lib/active_record/railties/console_sandbox.rb
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 4e82761e5d..dd01bbab1d 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -112,7 +112,7 @@ module Rails
def load_console(sandbox=false)
initialize_console(sandbox)
- railties.all { |r| r.load_console }
+ railties.all { |r| r.load_console(sandbox) }
super()
self
end
@@ -196,7 +196,6 @@ module Rails
def initialize_console(sandbox=false)
require "rails/console/app"
- require "rails/console/sandbox" if sandbox
require "rails/console/helpers"
end
end
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb
index 7fca565124..b183eb8ddd 100644
--- a/railties/lib/rails/railtie.rb
+++ b/railties/lib/rails/railtie.rb
@@ -173,8 +173,8 @@ module Rails
def eager_load!
end
- def load_console
- self.class.console.each(&:call)
+ def load_console(sandbox=false)
+ self.class.console.each { |block| block.call(sandbox) }
end
def load_tasks
diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb
index 793e73556c..5ae6323345 100644
--- a/railties/test/application/console_test.rb
+++ b/railties/test/application/console_test.rb
@@ -8,9 +8,9 @@ class ConsoleTest < Test::Unit::TestCase
boot_rails
end
- def load_environment
+ def load_environment(sandbox = false)
require "#{rails_root}/config/environment"
- Rails.application.load_console
+ Rails.application.load_console(sandbox)
end
def test_app_method_should_return_integration_session
@@ -73,6 +73,20 @@ class ConsoleTest < Test::Unit::TestCase
helper.truncate('Once upon a time in a world far far away')
end
+ def test_with_sandbox
+ require 'rails/all'
+ value = false
+
+ Class.new(Rails::Railtie) do
+ console do |sandbox|
+ value = sandbox
+ end
+ end
+
+ load_environment(true)
+ assert value
+ end
+
def test_active_record_does_not_panic_when_referencing_an_observed_constant
add_to_config "config.active_record.observers = :user_observer"