on irc.freenode.net > 50 users every day • Github with highly active core devs solving issues • Stackoverflow questions 'padrino' tag • Google group lots of knowledge in here :) • Guides & Tutorial our very own always growing docs • A lot of Gems Sinatra/Rack compliant and more The community
from app 1' end end class App2 < Padrino::Application get '/' do haml '%h1 hello from app 2' end end Padrino.mount(App1).to('/app1') Padrino.mount(App2).to('/').host(/app2.*/) Padrino.run! Multiple applications
do slim 'h1 hello world' end get :index do # looks for view bar.slim # and layout mine.slim render 'bar' end end Rendering views less conventions, more clarity
from: '[email protected]', subject: 'Foo!', body: 'Bar! :)' # and from a... model? The same! MyApp.email to: '[email protected]', from: '[email protected]', subject: 'Foo!', body: 'Bar model! :)' # Somebody said templates? Sure! MyApp.mailer :notify do email :exception do |exception| from 'The Exceptionator <[email protected]>' to '[email protected]' subject exception.message body exception.backtrace.join("\n") # or # render 'whatever_haml_slim_or_plain' end end MyApp.deliver :notify, :exception, exception Padrino's Postal Office Simple. Clear. Padrino Style
1.0. Lots of things have been on our minds since: • Reactor pattern ? • Actors/Celluloid ? • Concurrency? • JRuby ? • Rubinius ? • MRuby ? What took us so long?
the amount of resources used for a medium sized Rails app is unacceptable: More than 2 gb of ram to serve less than 100 req/s Scaling often means "buy more RAM" :( Better resource management
safety. In v1.0, we will give you: • Fast Fork Reloader (with preforking), • Full drip support for JRuby • and we're still planning more... A brand new reloader
end end module Route2 include Padrino::Routes get '/route2' do 'route2' end end module Route3 include Route1 include Route2 get '/route3' do 'route3' end end Padrino.new do include Route3 get :index do 'hello world' end run! end
world' } def self.page_template slim :page end end class Templater2 # Inherit templates include Templater1 def self.page_custom slim :hello, layout: false end end
Padrino 1.0 will provide: • Mount separate apps using Bundler • Reload support in development • Test yet run each in isolated gems. Modularized apps and gems
we are planning a rewrite towards 1.0 to simplify routing syntax: • Named routes • Namespaced Routes (aka controllers) • Advanced routing Routing: Do More with Less
system will be more explicit than before so you should always provide a path. Maybe a bit annoying but definitely easier to read! get :index do end now should be: get :index, '/' do end better explained: edit :me, :with => :id do end now should be: edit :me, '/me/:id/edit' do end
UI living client-side built on Javascript and our Ruby apps tend to be merely APIs interface. We also want to help you with this... Less conventions, more expressiveness Easy peasy APIs
roles • Sorting, filtering and paging support • Pluggable authentication. Our built-in solution will be replaced with basic HTTP auth and an API will be created to easily plug solutions like padrino-warden Padrino Admin
websockets • Better asset pipeline management • Better support for JS libraries and frameworks such as Backbone, Ember, Angular, Spine, Batman, etc. • Hot code push of your JS and CSS on development mode! ;) • Easy and reliable deployments More awesomeness
member, helping us get towards 0.11 • Igor (ujifgc). New Padrino contributor, sending out countless pull requests. • Tom Parandyk (tomatuxtemple). Awesome work on the new branding and soon a new website. • Carlo (waydotnet). Rewriting the Padrino admin powered by Bootstrap. • Matthias Guenther (matthias-guenther). For putting up our very own Open Source Book!!