diff options
author | Joshua Peek <josh@joshpeek.com> | 2008-12-17 09:53:56 -0600 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-12-17 09:53:56 -0600 |
commit | 61a41154f7d50099da371e0d2f22fd25ab9113c2 (patch) | |
tree | 257314af12fd4b66473752159b14e288af9864ee /railties/lib/initializer.rb | |
parent | 97a178bfa4d5101dca73ae931cc9c77385d8c97e (diff) | |
download | rails-61a41154f7d50099da371e0d2f22fd25ab9113c2.tar.gz rails-61a41154f7d50099da371e0d2f22fd25ab9113c2.tar.bz2 rails-61a41154f7d50099da371e0d2f22fd25ab9113c2.zip |
Make generated Metal bits a pure rack endpoint application (not middleware)
Instead of calling super to pass the request on, return a 404.
The modified app looks like this:
# app/metal/poller.rb
class Poller
def self.call(env)
if env["PATH_INFO"] =~ /^\/poller/
[200, {"Content-Type" => "text/html"}, "Hello, World!"]
else
[404, {"Content-Type" => "text/html"}, "Not Found"]
end
end
end
But you aren't locked in to just Rails:
# app/metal/api.rb
require 'sinatra'
Sinatra::Application.default_options.merge!(:run => false, :env => :production)
Api = Sinatra.application unless defined? Api
get '/interesting/new/ideas' do
'Hello Sinatra!'
end
Diffstat (limited to 'railties/lib/initializer.rb')
-rw-r--r-- | railties/lib/initializer.rb | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb index f22e34c7dc..637fe74313 100644 --- a/railties/lib/initializer.rb +++ b/railties/lib/initializer.rb @@ -536,9 +536,7 @@ Run `rake gems:install` to install the missing gems. end def initialize_metal - Dir["#{configuration.root_path}/app/metal/*.rb"].each do |file| - configuration.middleware.use(File.basename(file, '.rb').camelize) - end + configuration.middleware.use Rails::Rack::Metal end # Initializes framework-specific settings for each of the loaded frameworks |