Mais conteúdo relacionado Semelhante a Merb Day Keynote (20) Merb Day Keynote7. run proc do |env|
[
200,
{quot;Content-Typequot; => quot;text/htmlquot;},
quot;Hello from rackquot;
]
end
8. class QuickApp
def call(env)
[
200,
{quot;Content-Typequot; => quot;text/htmlquot;},
quot;Hello from rackquot;
]
end
end
run QuickApp.new
9. class QuickApp
def call(env)
[
200,
{quot;Content-Typequot; => quot;text/htmlquot;},
quot;Hello from rackquot;
]
end
end
run QuickApp.new
13. class MyApp < Application
def string
quot;Stringquot;
end
end
14. class MyApp < Application
def string
quot;Stringquot;
end
end
16. class MyApp < Application
def index
render
end
def string
quot;Stringquot;
end
end
17. class MyApp < Application
def index
render
end
def string
quot;Stringquot;
end
end
46. class User
cattr_accessor :current
end
class Foo < Merb::Controller
before do
User.current = session.user
end
end
47. class User
cattr_accessor :current
end
class Foo < FAIL
Merb::Controller
before do
User.current = session.user
end
end
51. class User
def self.current=(user)
Thread.current[:user] = user
end
def self.current
Thread.current[:user]
end
end
class Foo < Merb::Controller
before do
User.current = session.user
end
end
57. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
58. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
clear x
59. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
clear x
is there an x?
60. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
clear x
is there an x?
no? return nil x=1
64. Hash {:x => 5}
Thread 1 Thread 2
Read x
is there an x?
yes? return 5
65. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
clear x
is there an x?
yes? return 5 x=1
68. Hash {:x => 5}
Thread 1 Thread 2
Write x=”1”
clear x
x=1
69. Hash {:x => 5}
Thread 1 Thread 2
Read x Write x=”1”
clear x
is there an x?
yes? return 1 x=1
72. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency quot;merb-slicesquot;, merb_gems_version
dependency quot;merb-auth-corequot;, merb_gems_version
dependency quot;merb-auth-morequot;, merb_gems_version
dependency quot;merb-auth-slice-passwordquot;, merb_gems_version
dependency quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
73. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency quot;merb-slicesquot;, merb_gems_version
dependency quot;merb-auth-corequot;, merb_gems_version
dependency quot;merb-auth-morequot;, merb_gems_version
dependency quot;merb-auth-slice-passwordquot;, merb_gems_version
dependency quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
74. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency quot;merb-slicesquot;, merb_gems_version
dependency quot;merb-auth-corequot;, merb_gems_version
dependency quot;merb-auth-morequot;, merb_gems_version
dependency quot;merb-auth-slice-passwordquot;, merb_gems_version
dependency quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
75. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency
dependency
quot;merb-slicesquot;, merb_gems_version
1 .1.4
quot;merb-auth-corequot;, merb_gems_version
dependency
uby
quot;merb-auth-morequot;, merb_gems_version
dependency
dependency J R
quot;merb-auth-slice-passwordquot;, merb_gems_version
quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
76. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency quot;merb-slicesquot;, merb_gems_version
dependency quot;merb-auth-corequot;, merb_gems_version
dependency quot;merb-auth-morequot;, merb_gems_version
dependency quot;merb-auth-slice-passwordquot;, merb_gems_version
dependency quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
77. merb_gems_version = quot;1.0.4quot;
dm_gems_version = quot;0.9.7quot;
dependency quot;merb-action-argsquot;, merb_gems_version
dependency quot;merb-assetsquot;, merb_gems_version
dependency quot;merb-cachequot;, merb_gems_version
dependency quot;merb-helpersquot;, merb_gems_version
dependency quot;merb-mailerquot;, merb_gems_version
dependency
.5+
quot;merb-slicesquot;, merb_gems_version
dependency
1 .1
quot;merb-auth-corequot;, merb_gems_version
dependency
dependency by
quot;merb-auth-morequot;, merb_gems_version
Ru
quot;merb-auth-slice-passwordquot;, merb_gems_version
dependency J
quot;merb-param-protectionquot;, merb_gems_version
dependency quot;merb-exceptionsquot;, merb_gems_version
dependency quot;dm-corequot;, dm_gems_version
dependency quot;dm-aggregatesquot;, dm_gems_version
dependency quot;dm-migrationsquot;, dm_gems_version
dependency quot;dm-timestampsquot;, dm_gems_version
dependency quot;dm-typesquot;, dm_gems_version
dependency quot;dm-validationsquot;, dm_gems_version
79. # This is a stub method so plugins can
# implement param filtering if they want.
#
# ==== Parameters
# params<Hash{Symbol => String}>::
# A list of params
#
# ==== Returns
# Hash{Symbol => String}::
# A new list of params, filtered as desired
#
# :api: plugin
# @overridable
def self._filter_params(params)
params
end
80. class Articles < Application
params_accessible :article =>
[:title, :body]
end
81. class Articles < Application
params_accessible :article =>
[:title, :body]
end
82. class Articles < Application
def self._filter_params(params)
# deep_clone
ret =
Marshal.load(Marshal.dump(params))
ret[:post].reject! do |k,v|
!k.in?(:title, :body)
end
end
end
83. class Articles < Application
def self._filter_params(params)
# deep_clone
ret =
Marshal.load(Marshal.dump(params))
ret[:post].reject! do |k,v|
!k.in?(:title, :body)
end
end
end
84. # :api: public
# @overridable
def _template_location(ctx, type, ctrlr)
_conditionally_append_extension(
ctrlr ?
quot;#{ctrlr}/#{ctx}quot; :
quot;#{ctx}quot;, type)
end
85. class Articles < Application
def self._template_location(
ctx, type, ctrlr)
quot;#{ctrlr}.#{ctx}.#{type}quot;
end
end
86. class Articles < Application
def self._template_location(
ctx, type, ctrlr)
quot;#{ctrlr}.#{ctx}.#{type}quot;
end
end
87. class Articles < Application
def self._template_location(
t”
ay
ctx, type, ctrlr)
l ou
r= “
ro lle
nt
quot;#{ctrlr}.#{ctx}.#{type}quot;
co
end
end
88. class Articles < Application
self.template_roots = [
[
Merb.root / quot;appquot; / quot;viewsquot;,
:_template_location
],
[
Merb.root / quot;my_viewsquot;,
:_my_template_location
]
]
end
96. def _slice_template_location(ctx, type, ctrlr)
if ctrlr && ctrlr.include?('/')
# skip first segment if given (which is the module name)
segments = ctrlr.split('/')
quot;#{segments[1,segments.length-1].join('/')}/#{ctx}.#{type}quot;
else
# default template location logic
_template_location(ctx, type, ctrlr)
end
end
98. def load_template_io(path)
file = Dir[
quot;#{path}.{#{template_extensions.join(',')}}quot;
].first
File.open(file, quot;rquot;) if file
end
99. def load_template_io(path)
templates = {
Merb.root / quot;appquot; / quot;viewsquot; / quot;template_ioquot; /
quot;index.html.erbquot; => quot;Hello worldquot;,
Merb.root / quot;appquot; / quot;viewsquot; / quot;template_ioquot; /
quot;two.html.erbquot; => quot;Twoquot;
}
if templates[path + quot;.erbquot;]
VirtualFile.new(templates[path + quot;.erbquot;], path + quot;.erbquot;)
else
file = Dir[
quot;#{path}.{#{template_extensions.join(',')}}quot;
].first
File.open(file, quot;rquot;) if file
end
end
111. module MyApp
class TemplateIo < Application
def index
render
end
def two
render
end
end
end
112. module MyApp
class TemplateIo < Application
def index
render
end
def two
render
end
end
end
113. module MyApp
class TemplateIo < Application
def index
render MyApp::Application
end
def two
render
end
end
end
114. module MyApp
extend Merb::App
mount ::Blog, :at => quot;/blogquot;
Config[:framework] = flat
end
121. module MyApp
class Resource < Merb::Resource
def list(klass)
klass.all
end
def get(klass, ids)
klass.get(ids)
end
def authorized?(namespace, *args)
user == quot;wycatsquot;
end
def user
request.session.user
end
end
end