rack
TRANSCRIPT
ABOUTRubyist/JavaScripter
TeamMember/ /WorksatBlogatTwitter/Github-Google+:
Yeoman @keralarb @keralajs@whatznear
blog.revathskumar.com@revathskumar
+RevathSKumar
BASICRACKAPPrequire'rack'
app=Proc.newdo|env|[200,{'Content-Type'=>'text/html'},['MyfirstRackapp']]end
Rack::Handler::WEBrick.runapp
BASICMIDDLEWAREclassBasicMiddlewaredefinitializenext_in_chain@app=next_in_chainend
[email protected](env)endend
MIDDLEWARECHAINclassMwaredefinitializenext_in_chain@app=next_in_chainend
[email protected](env)endend
classMware1defcallenv[200,{'content-type'=>'text/html'},["HelloMware1"]]endend
app=Proc.newdo|env|Mware.new(Mware1.new).call(env)end
require'rack'
app=Rack::Builder.newdouseRack::CommonLogger
runProc.newdo|env|[200,{'Content-Type'=>'text/html'},['Usingbuilder']]endend
Rack::Handler::WEBrick.runapp
app=Proc.new{|env|stack=[proc{|app|Mware.newapp},proc{|app|Mware1.newapp}]mware_obj=stack.reverse.inject(self){|prev,curr|
curr[prev]#curr.call(prev)}
mware_obj.call(env)}
ROUTESrequire'rack'
app=Rack::Builder.newdouseRack::CommonLogger
map'/index'dorunProc.newdo|env|[200,{'Content-Type'=>'text/html'},['Index']]endend
runProc.newdo|env|[200,{'Content-Type'=>'text/html'},['Root']]endend
Rack::Handler::WEBrick.runapp
NESTEDROUTESrequire'rack'
app=Rack::Builder.newdo#...map'/index'do#...map'/1'dorunProc.newdo|env|[200,{'Content-Type'=>'text/html'},['Index1']]endendend#...end
Rack::Handler::WEBrick.runapp
VIEWclassBasicdefinitializeapp@index=File.read("index.html")end
defcallenv[200,{'Content-Type'=>'text/html'},[@index]]endend
require'rack'
app=Rack::Builder.newdouseRack::CommonLogger
runBasic.newend
Rack::Handler::WEBrick.runapp
RENDERINGERBrequire"erb"
classBasicerbattr_reader:rendered_htmldefinitializename@name=name@template=File.read('./index.erb')end
defrenderERB.new(@template,0,"","@rendered_html").resultbindingselfend
defcallapp[200,{'Content-Type'=>'text/html'},[render.rendered_html]]endend
ERB:LAYOUT&VIEWdefinitializename@name=name@layout=File.read('./layout.erb')@template=File.read('./index.erb')end
defrendertemplates=[@template,@layout]@rendered_html=templates.inject(nil)do|prev,temp|_render(temp){prev}endselfend
def_rendertempERB.new(temp).result(binding)end
RACK::STATICServestaticfiles
require'rack'
builder=Rack::Builder.newdouseRack::CommonLoggeruseRack::Static,:urls=>['/bower_components/','/assets/'],root:'.'
end
Rack::Handler::WEBrick.runbuilder
USINGRACKUP#config.rurunProc.newdo|env|[200,{'Content-Type'=>'text/html'},['MyfirstRackapp']]end
~$rackup
READCONFIG.RUORSUPPLIEDCONFIGFILECONVERTTOAINSTANCEOFRACK::BUILDER
config_file=File.read(config)rack_application=eval("Rack::Builder.new{#{config_file}}")