aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/examples/very_simple.rb
blob: 6714185172fa3be6d4f822d11b89384351ce4951 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$:.push "rails/activesupport/lib"
$:.push "rails/actionpack/lib"

require "action_controller"

class Kaigi < ActionController::Metal
  include AbstractController::Callbacks
  include ActionController::RackConvenience
  include ActionController::RenderingController
  include ActionController::Layouts
  include ActionView::Context
  
  before_filter :set_name
  append_view_path "views"
  
  def view_context
    self
  end
  
  def controller
    self
  end

  DEFAULT_LAYOUT = Object.new.tap {|l| def l.render(*) yield end }
  
  def render_template(template, layout = DEFAULT_LAYOUT, options = {}, partial = false)
    ret = template.render(self, {})
    layout.render(self, {}) { ret }
  end
  
  def index
    render :template => "template"
  end
  
  def alt
    render :template => "template", :layout => "alt"
  end
  
  private
  def set_name
    @name = params[:name]
  end
end

app = Rack::Builder.new do
  map("/kaigi") {  run Kaigi.action(:index) }
  map("/kaigi/alt") { run Kaigi.action(:alt) }
end.to_app

Rack::Handler::Mongrel.run app, :Port => 3000