aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorTim Raymond <xtjraymondx@gmail.com>2012-12-19 01:54:09 -0500
committerTim Raymond <xtjraymondx@gmail.com>2013-01-03 14:00:32 -0500
commit48d5a33269eac16e7927c8811bfdc6010a965959 (patch)
tree4f3332f57a84cde91a540292ff66c20cd817d012 /railties
parentcb2bd4aa619d9329c42aaf6d9f8eacc616ce53f4 (diff)
downloadrails-48d5a33269eac16e7927c8811bfdc6010a965959.tar.gz
rails-48d5a33269eac16e7927c8811bfdc6010a965959.tar.bz2
rails-48d5a33269eac16e7927c8811bfdc6010a965959.zip
Adding Back Rails::Engine::Railties#engines
Removing it breaks functionality with gems such as Thinking Sphinx. This restores it with a deprecation warning. Closes #8551
Diffstat (limited to 'railties')
-rw-r--r--railties/CHANGELOG.md6
-rw-r--r--railties/lib/rails/application.rb6
-rw-r--r--railties/lib/rails/engine.rb4
-rw-r--r--railties/lib/rails/engine/railties.rb29
-rw-r--r--railties/test/railties/engine_test.rb6
5 files changed, 46 insertions, 5 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md
index 927ab77566..9bcf53eaea 100644
--- a/railties/CHANGELOG.md
+++ b/railties/CHANGELOG.md
@@ -1,5 +1,11 @@
## Rails 4.0.0 (unreleased) ##
+* Restore Rails::Engine::Railties#engines with deprecation to ensure
+ compatibility with gems such as Thinking Sphinx
+ Fix #8551
+
+ *Tim Raymond*
+
* Add `-B` alias for `--skip-bundle` option in the rails new generators.
*Jiri Pospisil*
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index cff75872b2..05cc49d40a 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -55,6 +55,7 @@ module Rails
autoload :Bootstrap, 'rails/application/bootstrap'
autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
+ autoload :Railties, 'rails/engine/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
class << self
@@ -232,11 +233,6 @@ module Rails
config.helpers_paths
end
- def railties #:nodoc:
- @railties ||= Rails::Railtie.subclasses.map(&:instance) +
- Rails::Engine.subclasses.map(&:instance)
- end
-
protected
alias :build_middleware_stack :app
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 725295004f..33efcce5ee 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -468,6 +468,10 @@ module Rails
end
end
+ def railties
+ @railties ||= self.class::Railties.new
+ end
+
# Returns a module with all the helpers defined for the engine.
def helpers
@helpers ||= begin
diff --git a/railties/lib/rails/engine/railties.rb b/railties/lib/rails/engine/railties.rb
new file mode 100644
index 0000000000..1081700cd0
--- /dev/null
+++ b/railties/lib/rails/engine/railties.rb
@@ -0,0 +1,29 @@
+module Rails
+ class Engine < Railtie
+ class Railties
+ include Enumerable
+ attr_reader :_all
+
+ def initialize
+ @_all ||= ::Rails::Railtie.subclasses.map(&:instance) +
+ ::Rails::Engine.subclasses.map(&:instance)
+ end
+
+ def self.engines
+ @engines ||= ::Rails::Engine.subclasses.map(&:instance)
+ end
+
+ def each(*args, &block)
+ _all.each(*args, &block)
+ end
+
+ def -(others)
+ _all - others
+ end
+
+ delegate :engines, to: "self.class"
+ end
+ end
+end
+
+ActiveSupport::Deprecation.deprecate_methods(Rails::Engine::Railties, :engines)
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index a4a75fe459..37d0be107c 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -1241,6 +1241,12 @@ YAML
assert_equal '/foo/bukkits/bukkit', last_response.body
end
+ test "engines method is properly deprecated" do
+ boot_rails
+
+ assert_deprecated { app.railties.engines }
+ end
+
private
def app
Rails.application