aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails
diff options
context:
space:
mode:
authorwycats <wycats@gmail.com>2010-05-29 20:07:47 +0200
committerwycats <wycats@gmail.com>2010-05-29 20:08:00 +0200
commit45e60283e733a535d68d499aa20e095c905f43b0 (patch)
treeee2fbf07bfca011623c928c0b24a7783925e8f88 /railties/lib/rails
parent564ab4776c7e54268dc60e9a3fced7ba37657c72 (diff)
downloadrails-45e60283e733a535d68d499aa20e095c905f43b0.tar.gz
rails-45e60283e733a535d68d499aa20e095c905f43b0.tar.bz2
rails-45e60283e733a535d68d499aa20e095c905f43b0.zip
Removing Metal from Rails 3.
If you have existing Metals, you have a few options: * if your metal behaves like a middleware, add it to the middleware stack via config.middleware.use. You can use methods on the middleware stack to control exactly where it should go * if it behaves like a Rack endpoint, you can link to it in the router. This will result in more optimal routing time, and allows you to remove code in your endpoint that matches specific URLs in favor of the more powerful handling in the router itself. For the future, you can use ActionController::Metal to get a very fast controller with the ability to opt-in to specific controller features without paying the penalty of the full controller stack. Since Rails 3 is closer to Rack, the Metal abstraction is no longer needed.
Diffstat (limited to 'railties/lib/rails')
-rw-r--r--railties/lib/rails/application.rb10
-rw-r--r--railties/lib/rails/application/configuration.rb7
-rw-r--r--railties/lib/rails/application/metal_loader.rb50
-rw-r--r--railties/lib/rails/engine.rb7
-rw-r--r--railties/lib/rails/engine/configuration.rb1
-rw-r--r--railties/lib/rails/generators/base.rb2
-rw-r--r--railties/lib/rails/generators/rails/metal/USAGE8
-rw-r--r--railties/lib/rails/generators/rails/metal/metal_generator.rb11
-rw-r--r--railties/lib/rails/generators/rails/metal/templates/metal.rb12
-rw-r--r--railties/lib/rails/tasks/framework.rake2
10 files changed, 8 insertions, 102 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index a3b3a56bc8..c588a41443 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -27,7 +27,7 @@ module Rails
# Besides providing the same configuration as Rails::Engine and Rails::Railtie,
# the application object has several specific configurations, for example
# "allow_concurrency", "cache_classes", "consider_all_requests_local", "filter_parameters",
- # "logger", "metals", "reload_engines", "reload_plugins" and so forth.
+ # "logger", "reload_engines", "reload_plugins" and so forth.
#
# Check Rails::Application::Configuration to see them all.
#
@@ -36,17 +36,15 @@ module Rails
# The application object is also responsible for holding the routes and reloading routes
# whenever the files change in development.
#
- # == Middlewares and metals
+ # == Middlewares
#
- # The Application is also responsible for building the middleware stack and setting up
- # both application and engines metals.
+ # The Application is also responsible for building the middleware stack.
#
class Application < Engine
autoload :Bootstrap, 'rails/application/bootstrap'
autoload :Configurable, 'rails/application/configurable'
autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
- autoload :MetalLoader, 'rails/application/metal_loader'
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
@@ -83,7 +81,7 @@ module Rails
end
end
- delegate :middleware, :metal_loader, :to => :config
+ delegate :middleware, :to => :config
def require_environment!
environment = paths.config.environment.to_a.first
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
index 1b8af370f7..f3a326f36d 100644
--- a/railties/lib/rails/application/configuration.rb
+++ b/railties/lib/rails/application/configuration.rb
@@ -9,7 +9,7 @@ module Rails
attr_accessor :allow_concurrency, :cache_classes, :cache_store,
:encoding, :consider_all_requests_local, :dependency_loading,
- :filter_parameters, :log_level, :logger, :metals,
+ :filter_parameters, :log_level, :logger,
:plugins, :preload_frameworks, :reload_engines, :reload_plugins,
:secret_token, :serve_static_assets, :session_options,
:time_zone, :whiny_nils
@@ -45,10 +45,6 @@ module Rails
@middleware ||= app_middleware.merge_into(default_middleware_stack)
end
- def metal_loader
- @metal_loader ||= Rails::Application::MetalLoader.new
- end
-
def paths
@paths ||= begin
paths = super
@@ -157,7 +153,6 @@ module Rails
middleware.use('::ActionDispatch::ParamsParser')
middleware.use('::Rack::MethodOverride')
middleware.use('::ActionDispatch::Head')
- middleware.use(lambda { metal_loader.build_middleware(metals) }, :if => lambda { metal_loader.metals.any? })
end
end
end
diff --git a/railties/lib/rails/application/metal_loader.rb b/railties/lib/rails/application/metal_loader.rb
deleted file mode 100644
index 2a43fa7892..0000000000
--- a/railties/lib/rails/application/metal_loader.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'action_dispatch'
-
-module Rails
- class Application
- class MetalLoader
- attr_reader :paths, :metals
-
- def initialize
- @paths, @metals = [], []
- end
-
- def build_middleware(list=nil)
- load_metals!(list)
- self
- end
-
- def new(app)
- ActionDispatch::Cascade.new(@metals, app)
- end
-
- def name
- ActionDispatch::Cascade.name
- end
- alias :to_s :name
-
- protected
-
- def load_metals!(list)
- metals = []
- list = Array(list || :all).map(&:to_sym)
-
- paths.each do |path|
- matcher = /\A#{Regexp.escape(path)}\/(.*)\.rb\Z/
- Dir.glob("#{path}/**/*.rb").sort.each do |metal_path|
- metal = metal_path.sub(matcher, '\1').to_sym
- next unless list.include?(metal) || list.include?(:all)
- require_dependency metal.to_s
- metals << metal
- end
- end
-
- metals = metals.sort_by do |m|
- [list.index(m) || list.index(:all), m.to_s]
- end
-
- @metals = metals.map { |m| m.to_s.camelize.constantize }
- end
- end
- end
-end
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index b44755820c..cdb00a4eff 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -25,7 +25,7 @@ module Rails
# end
#
# Then ensure that this file is loaded at the top of your config/application.rb (or in
- # your Gemfile) and it will automatically load models, controllers, helpers and metals
+ # your Gemfile) and it will automatically load models, controllers and helpers
# inside app, load routes at "config/routes.rb", load locales at "config/locales/*",
# load tasks at "lib/tasks/*".
#
@@ -73,7 +73,6 @@ module Rails
# paths.app.controllers = "app/controllers"
# paths.app.helpers = "app/helpers"
# paths.app.models = "app/models"
- # paths.app.metals = "app/metal"
# paths.app.views = "app/views"
# paths.lib = "lib"
# paths.lib.tasks = "lib/tasks"
@@ -202,10 +201,6 @@ module Rails
end
end
- initializer :add_metals do |app|
- app.metal_loader.paths.unshift(*paths.app.metals.to_a)
- end
-
initializer :load_config_initializers do
paths.config.initializers.to_a.sort.each do |initializer|
load(initializer)
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index c5411a0331..446fe0bda9 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -19,7 +19,6 @@ module Rails
paths.app.helpers "app/helpers", :eager_load => true
paths.app.models "app/models", :eager_load => true
paths.app.mailers "app/mailers", :eager_load => true
- paths.app.metals "app/metal", :eager_load => true
paths.app.views "app/views"
paths.lib "lib", :load_path => true
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb
index 766644bbc2..bd2260fc29 100644
--- a/railties/lib/rails/generators/base.rb
+++ b/railties/lib/rails/generators/base.rb
@@ -288,7 +288,7 @@ module Rails
end
# Removes the namespaces and get the generator name. For example,
- # Rails::Generators::MetalGenerator will return "metal" as generator name.
+ # Rails::Generators::ModelGenerator will return "model" as generator name.
#
def self.generator_name
@generator_name ||= begin
diff --git a/railties/lib/rails/generators/rails/metal/USAGE b/railties/lib/rails/generators/rails/metal/USAGE
deleted file mode 100644
index c88325a444..0000000000
--- a/railties/lib/rails/generators/rails/metal/USAGE
+++ /dev/null
@@ -1,8 +0,0 @@
-Description:
- Cast some metal!
-
-Examples:
- `rails generate metal poller`
-
- This will create:
- Metal: app/metal/poller.rb
diff --git a/railties/lib/rails/generators/rails/metal/metal_generator.rb b/railties/lib/rails/generators/rails/metal/metal_generator.rb
deleted file mode 100644
index fe4f945cad..0000000000
--- a/railties/lib/rails/generators/rails/metal/metal_generator.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module Rails
- module Generators
- class MetalGenerator < NamedBase
- check_class_collision
-
- def create_metal_file
- template "metal.rb", "app/metal/#{file_name}.rb"
- end
- end
- end
-end
diff --git a/railties/lib/rails/generators/rails/metal/templates/metal.rb b/railties/lib/rails/generators/rails/metal/templates/metal.rb
deleted file mode 100644
index 8cc3f1f258..0000000000
--- a/railties/lib/rails/generators/rails/metal/templates/metal.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-# Allow the metal piece to run in isolation
-require File.expand_path('../../../config/environment', __FILE__) unless defined?(Rails)
-
-class <%= class_name %>
- def self.call(env)
- if env["PATH_INFO"] =~ /^\/<%= file_name %>/
- [200, {"Content-Type" => "text/html"}, ["Hello, World!"]]
- else
- [404, {"Content-Type" => "text/html", "X-Cascade" => "pass"}, ["Not Found"]]
- end
- end
-end
diff --git a/railties/lib/rails/tasks/framework.rake b/railties/lib/rails/tasks/framework.rake
index 063a393bfc..ac510eee2e 100644
--- a/railties/lib/rails/tasks/framework.rake
+++ b/railties/lib/rails/tasks/framework.rake
@@ -37,7 +37,7 @@ namespace :rails do
project_templates = "#{Rails.root}/lib/templates"
default_templates = { "erb" => %w{controller mailer scaffold},
- "rails" => %w{controller helper metal scaffold_controller stylesheets} }
+ "rails" => %w{controller helper scaffold_controller stylesheets} }
default_templates.each do |type, names|
local_template_type_dir = File.join(project_templates, type)