diff options
author | Joshua Peek <josh@joshpeek.com> | 2008-12-16 13:11:51 -0600 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-12-16 13:15:06 -0600 |
commit | 8c3a54366435eebc2c8aa63b63e1349ce74a7b38 (patch) | |
tree | 547451f6c639994a948f8cba6505022458aedeac /railties/lib/rails_generator/generators/components/metal | |
parent | c4023cbe206415cf3ca1ca92cd9980a4aa4aed00 (diff) | |
download | rails-8c3a54366435eebc2c8aa63b63e1349ce74a7b38.tar.gz rails-8c3a54366435eebc2c8aa63b63e1349ce74a7b38.tar.bz2 rails-8c3a54366435eebc2c8aa63b63e1349ce74a7b38.zip |
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`
Diffstat (limited to 'railties/lib/rails_generator/generators/components/metal')
3 files changed, 28 insertions, 0 deletions
diff --git a/railties/lib/rails_generator/generators/components/metal/USAGE b/railties/lib/rails_generator/generators/components/metal/USAGE new file mode 100644 index 0000000000..123ec6c03f --- /dev/null +++ b/railties/lib/rails_generator/generators/components/metal/USAGE @@ -0,0 +1,8 @@ +Description: + Cast some metal! + +Examples: + `./script/generate metal poller` + + This will create: + Metal: app/metal/poller.rb diff --git a/railties/lib/rails_generator/generators/components/metal/metal_generator.rb b/railties/lib/rails_generator/generators/components/metal/metal_generator.rb new file mode 100644 index 0000000000..64f49d929d --- /dev/null +++ b/railties/lib/rails_generator/generators/components/metal/metal_generator.rb @@ -0,0 +1,8 @@ +class MetalGenerator < Rails::Generator::NamedBase + def manifest + record do |m| + m.directory 'app/metal' + m.template 'metal.rb', File.join('app/metal', "#{file_name}.rb") + end + end +end diff --git a/railties/lib/rails_generator/generators/components/metal/templates/metal.rb b/railties/lib/rails_generator/generators/components/metal/templates/metal.rb new file mode 100644 index 0000000000..39487263df --- /dev/null +++ b/railties/lib/rails_generator/generators/components/metal/templates/metal.rb @@ -0,0 +1,12 @@ +# Allow the metal piece to run in isolation +require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails) + +class <%= class_name %> < Rails::Rack::Metal + def call(env) + if env["PATH_INFO"] =~ /^\/<%= file_name %>/ + [200, {"Content-Type" => "text/html"}, "Hello, World!"] + else + super + end + end +end |