1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
Commit graph

17 commits

Author SHA1 Message Date
Tim Connor
e3891601d1 fix problems with requires in metal choking under development reloading [#2579 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-05-04 20:11:24 -05:00
Jeremy Kemper
ab321268f8 No more free lunch 2009-04-22 16:10:49 -07:00
Luca Guidi
5f10533949 Make sure Metal use ActionController class name conventions [#2242 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-03-15 18:41:21 -05:00
Joshua Peek
0c9bbf8c9d Fix serving index files with rack static file server [#2180 state:resolved] 2009-03-09 23:31:04 -05:00
Simon Jefford
e97180c273 Ensure that loading metals from the main app and engines works on older Ruby versions [#2143 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-03-05 18:50:52 -06:00
Simon Jefford
4d4d2c3896 Enhanced Rails Metal - the load order of metals can now be configured [#2057 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-03-03 12:39:19 -06:00
Matthew Rudy Jacobs
319106d09c Metal can now line in plugins under app/metal [#2045 state:committed]
Signed-off-by: David Heinemeier Hansson <david@loudthinking.com>
2009-02-27 14:37:11 +01:00
Joshua Peek
12e416a04b Diverge Metal implementation from Rack::Cascade since we want the last app to return its headers and body if the status is a 404. 2008-12-19 11:07:25 -06:00
Jeremy Kemper
6ce4b43035 Cheaper metal cascade 2008-12-18 16:55:03 -08:00
Jeremy Kemper
a10e473b81 Rename Rails::Rack::Logger -> LogTailer. Speed up log mtime checks. 2008-12-18 14:42:06 -08:00
Jeremy Kemper
6703f909c7 Cheaper log tail time comparison 2008-12-18 14:17:43 -08:00
Joshua Peek
61a41154f7 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
2008-12-17 09:53:56 -06:00
Joshua Peek
8c3a543664 Introduce Rails Metal
# app/metal/poller.rb
  class Poller < Rails::Rack::Metal
    def call(env)
      if env["PATH_INFO"] =~ /^\/poller/
        [200, {"Content-Type" => "application/json"}, Message.recent.to_json]
      else
        super
      end
    end
  end

* There is a generator to help you get started
    `script/generate metal poller`

* Also, metal bits can be ran standalone with rackup
    `rackup app/metal/poller.rb`
2008-12-16 13:15:06 -06:00
Jeremy Kemper
0b4858cf38 Require rack/utils explicitly 2008-12-03 10:23:58 -06:00
Joshua Peek
c80fe1093d Move debugger into middleware 2008-11-25 15:05:07 -06:00
Joshua Peek
e9ae2b2f4c Added rack logger middleware that tails the environment log 2008-08-19 00:18:26 -05:00
Joshua Peek
a980eb8c77 Added Rack middleware to handle static files. 2008-06-01 13:18:31 -07:00