aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-07-17 10:59:41 +0200
committerJosé Valim <jose.valim@gmail.com>2010-07-18 11:02:07 +0200
commitfa98eca75bd8666719bf3d061c87638850a20fe9 (patch)
tree8856316fd6c3bf49fc1ace113f6f62891701bc28 /railties/lib/rails
parentcfca55949f51bf3970bae7c506807db97dbcf05f (diff)
downloadrails-fa98eca75bd8666719bf3d061c87638850a20fe9.tar.gz
rails-fa98eca75bd8666719bf3d061c87638850a20fe9.tar.bz2
rails-fa98eca75bd8666719bf3d061c87638850a20fe9.zip
Add console hook to force ActiveRecord::Base to be loaded when console starts avoiding reference loops.
Diffstat (limited to 'railties/lib/rails')
-rw-r--r--railties/lib/rails/application.rb13
-rw-r--r--railties/lib/rails/commands/console.rb5
-rw-r--r--railties/lib/rails/railtie.rb18
3 files changed, 24 insertions, 12 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 458177b954..3f9bca0bd6 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -149,6 +149,13 @@ module Rails
self
end
+ def load_console(sandbox=false)
+ initialize_console(sandbox)
+ railties.all { |r| r.load_console }
+ super()
+ self
+ end
+
def app
@app ||= begin
config.middleware = config.middleware.merge_into(default_middleware_stack)
@@ -212,5 +219,11 @@ module Rails
def initialize_generators
require "rails/generators"
end
+
+ def initialize_console(sandbox=false)
+ require "rails/console/app"
+ require "rails/console/sandbox" if sandbox
+ require "rails/console/helpers"
+ end
end
end
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb
index 50df6ba405..834a120c01 100644
--- a/railties/lib/rails/commands/console.rb
+++ b/railties/lib/rails/commands/console.rb
@@ -23,10 +23,7 @@ module Rails
opt.parse!(ARGV)
end
- @app.initialize!
- require "rails/console/app"
- require "rails/console/sandbox" if options[:sandbox]
- require "rails/console/helpers"
+ @app.load_console(options[:sandbox])
if options[:debugger]
begin
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb
index dbdbfea509..1d6a2de87d 100644
--- a/railties/lib/rails/railtie.rb
+++ b/railties/lib/rails/railtie.rb
@@ -156,6 +156,12 @@ module Rails
@rake_tasks
end
+ def console(&blk)
+ @load_console ||= []
+ @load_console << blk if blk
+ @load_console
+ end
+
def generators(&blk)
@generators ||= []
@generators << blk if blk
@@ -170,20 +176,16 @@ module Rails
def eager_load!
end
- def rake_tasks
- self.class.rake_tasks
- end
-
- def generators
- self.class.generators
+ def load_console
+ self.class.console.each(&:call)
end
def load_tasks
- rake_tasks.each { |blk| blk.call }
+ self.class.rake_tasks.each(&:call)
end
def load_generators
- generators.each { |blk| blk.call }
+ self.class.generators.each(&:call)
end
end
end