SlideShare a Scribd company logo
1 of 20
Download to read offline
Introduction to Padrino
   Toronto Ruby Brigade


    http://www.padrinorb.com/
What is Padrino?

        A Framework built on top of Sinatra




              ...a 'micro-framework'

          ● good for small web application
          ● small footprint
          ● easy to learn and use
What is Padrino?

● A quote from the Padrino mailing list:
   ○ The Padrino framework appreciates and believes in the
     philosophy of Sinatra [in] keeping things simple, elegant,
     and 'closer to the metal' while still allowing you to
     express yourself in a ruby-esque manner. However at
     times it's nice to have some more additional functionalit
     [y] (like helpers, mailers, even caching) that Rails
     does [have]; and it's nice to have those features without
     leveraging their full opinionated stack.
       ■ Arthur Chiu
How is it different than Sinatra?

Adds generators for building projects:
 ● Can be 'tiny'
    ○ padrino g project my_project --tiny
 ● Can be 'Rails like'
    ○ padrino g project my_big_project -d activerecord -s prototype
      -e erb -a sqlite -t rspec -m mocha
padrino g project my_project --tiny
padrino g project my_big_project -d activerecord -s prototype -e erb -a sqlite -t rspec -m mocha
How is it different than Sinatra?

Helpers and functionality familiar to Rails developers:
 ● Tag helpers (tag, content_tag, input_tag, form_tag, link_to, image_tag)
 ● Mailer functionality (similar to ActiveMailer)
 ● Admin Interface (inspired by Django)
 ● Reloading (automatically reloads server, previously you had to use
    something like 'shotgun' to have this behaviour with Sinatra -- never a
    problem with Rails)
 ● Localization support
 ● [complete list: http://www.padrinorb.com/]
How is it different than Rails?

Has a flexible project generator:
 ● padrino g project test_app -d datamapper -b
 ● padrino g project test_app -d mongoid -t rspec -e haml -m rr -s
   jquery -b
 ● padrino g project test_app --test none --renderer none
 ● Plugin Generator
     ○ ...
 ● [more details: http://www.padrinorb.com/guides/generators]
How is it different than Rails?

Mounting sub-applications:
 ● Extend application functionality by building 'apps'
    ○ Build apps within an app
       ■ Padrino.mount("blog").to("/blog")
       ■ Padrino.mount("website").to("/website")
       ■ Padrino.mount("app").to("/")
Advanced mounting:
  ● Padrino.mount("Blog").to("/").host("blog.example.org")
  ● Padrino.mount("Admin").host("admin.example.org")
  ● Padrino.mount("WebSite").host(/.*.?example.org/)
  ● Padrino.mount("Foo").to("/foo").host("bar.example.org"

[more details: http://www.padrinorb.com/guides/mounting-applications]
padrino g app my_sub_app
How is it different than Rails?

Has automatic administration interface generator --
inspired by Django:
  ● padrino g admin
     ○ generate admin application to be mounted inside main
       application
  ● padrino rake ar:migrate
     ○ for admin tables
  ● padrino rake seed
     ○ create first admin account wizard
  ● padrino generate admin_page model_name
     ○ adding a page to manage a new model
  ● [more details: http://www.padrinorb.com/guides/basic-projects#generating-the-admin-section]
padrino g admin
1) Run 'padrino rake ar:migrate'
2) Run 'padrino rake seed'
3) Visit the admin panel in the browser at '/admin'
Administration login page
User editing form
Why would someone choose to
develop with Padrino VS Rails?
From beginner...
 ● Sinatra is much easier to learn conceptually and in practice.
Why would someone choose to
develop with Padrino VS Rails?
... to advanced.
   ● Once applications reach a certain size [...], Sinatra begins to
     break down without some imposed structure, feature
     extensions and a framework to bring things together.
       ○ Nathan Esquenazi
Why would someone choose to
develop with Padrino VS Rails?
Other reasons why you might want to take a look at
Padrino:
 ● Benchmarks performance of Padrino vs Rails (memory footprint, speed)
 ● The ability to easily 'scale' up a Sinatra based app with more features
   and functionalities with Padrino modules & embedded apps (app within an
   app)
 ● In Rails, Sinatra is already used sometimes as a platform for building
   'plugins' and extending Rails functionality
 ● Agnostic generators that generate a variety of components for your
   project (orm's, js, renderers, tests, etc...)
 ● Admin interface application that can be generated into your existing
   padrino application ("... not just the scaffold, but the whole house" -- to
   paraphrase Django)
Why would someone choose to
develop with Padrino VS Rails?
Selling Padrino:
 ● My motivation? I like to touch all pieces of my stack on my
   own, so I use a framework where I can easily look 'under
   the hood'.
     ○ Florian Gilcher
@victorbstan


  With help from the Padrino community
                     &
Special thanks to the Toronto Ruby Brigade

More Related Content

Similar to Introduction to padrino

Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
Emma Jane Hogbin Westby
 
The Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
The Kitchen Cloud How To: Automating Joyent SmartMachines with ChefThe Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
The Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
Chef Software, Inc.
 
Move out from AppEngine, and Python PaaS alternatives
Move out from AppEngine, and Python PaaS alternativesMove out from AppEngine, and Python PaaS alternatives
Move out from AppEngine, and Python PaaS alternatives
tzang ms
 

Similar to Introduction to padrino (20)

django
djangodjango
django
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
Radiant CMS - smart simplicity
Radiant CMS - smart simplicityRadiant CMS - smart simplicity
Radiant CMS - smart simplicity
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
Free django
Free djangoFree django
Free django
 
Dust.js
Dust.jsDust.js
Dust.js
 
The Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
The Kitchen Cloud How To: Automating Joyent SmartMachines with ChefThe Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
The Kitchen Cloud How To: Automating Joyent SmartMachines with Chef
 
Padrino is agnostic
Padrino is agnosticPadrino is agnostic
Padrino is agnostic
 
Move out from AppEngine, and Python PaaS alternatives
Move out from AppEngine, and Python PaaS alternativesMove out from AppEngine, and Python PaaS alternatives
Move out from AppEngine, and Python PaaS alternatives
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
 
PyconIE 2016 - Kajiki, the fast and validated template engine your were looki...
PyconIE 2016 - Kajiki, the fast and validated template engine your were looki...PyconIE 2016 - Kajiki, the fast and validated template engine your were looki...
PyconIE 2016 - Kajiki, the fast and validated template engine your were looki...
 
Web applications support on AGL
Web applications support on AGLWeb applications support on AGL
Web applications support on AGL
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
A intro to (hosted) Shiny Apps
A intro to (hosted) Shiny AppsA intro to (hosted) Shiny Apps
A intro to (hosted) Shiny Apps
 
Scala services in action
Scala services in actionScala services in action
Scala services in action
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
PHP Aberdeen Quick optimisation of PHP with Webgrind
PHP Aberdeen Quick optimisation of PHP with WebgrindPHP Aberdeen Quick optimisation of PHP with Webgrind
PHP Aberdeen Quick optimisation of PHP with Webgrind
 

Recently uploaded

Recently uploaded (20)

SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 

Introduction to padrino

  • 1. Introduction to Padrino Toronto Ruby Brigade http://www.padrinorb.com/
  • 2. What is Padrino? A Framework built on top of Sinatra ...a 'micro-framework' ● good for small web application ● small footprint ● easy to learn and use
  • 3. What is Padrino? ● A quote from the Padrino mailing list: ○ The Padrino framework appreciates and believes in the philosophy of Sinatra [in] keeping things simple, elegant, and 'closer to the metal' while still allowing you to express yourself in a ruby-esque manner. However at times it's nice to have some more additional functionalit [y] (like helpers, mailers, even caching) that Rails does [have]; and it's nice to have those features without leveraging their full opinionated stack. ■ Arthur Chiu
  • 4. How is it different than Sinatra? Adds generators for building projects: ● Can be 'tiny' ○ padrino g project my_project --tiny ● Can be 'Rails like' ○ padrino g project my_big_project -d activerecord -s prototype -e erb -a sqlite -t rspec -m mocha
  • 5. padrino g project my_project --tiny
  • 6. padrino g project my_big_project -d activerecord -s prototype -e erb -a sqlite -t rspec -m mocha
  • 7. How is it different than Sinatra? Helpers and functionality familiar to Rails developers: ● Tag helpers (tag, content_tag, input_tag, form_tag, link_to, image_tag) ● Mailer functionality (similar to ActiveMailer) ● Admin Interface (inspired by Django) ● Reloading (automatically reloads server, previously you had to use something like 'shotgun' to have this behaviour with Sinatra -- never a problem with Rails) ● Localization support ● [complete list: http://www.padrinorb.com/]
  • 8. How is it different than Rails? Has a flexible project generator: ● padrino g project test_app -d datamapper -b ● padrino g project test_app -d mongoid -t rspec -e haml -m rr -s jquery -b ● padrino g project test_app --test none --renderer none ● Plugin Generator ○ ... ● [more details: http://www.padrinorb.com/guides/generators]
  • 9. How is it different than Rails? Mounting sub-applications: ● Extend application functionality by building 'apps' ○ Build apps within an app ■ Padrino.mount("blog").to("/blog") ■ Padrino.mount("website").to("/website") ■ Padrino.mount("app").to("/") Advanced mounting: ● Padrino.mount("Blog").to("/").host("blog.example.org") ● Padrino.mount("Admin").host("admin.example.org") ● Padrino.mount("WebSite").host(/.*.?example.org/) ● Padrino.mount("Foo").to("/foo").host("bar.example.org" [more details: http://www.padrinorb.com/guides/mounting-applications]
  • 10. padrino g app my_sub_app
  • 11. How is it different than Rails? Has automatic administration interface generator -- inspired by Django: ● padrino g admin ○ generate admin application to be mounted inside main application ● padrino rake ar:migrate ○ for admin tables ● padrino rake seed ○ create first admin account wizard ● padrino generate admin_page model_name ○ adding a page to manage a new model ● [more details: http://www.padrinorb.com/guides/basic-projects#generating-the-admin-section]
  • 13. 1) Run 'padrino rake ar:migrate' 2) Run 'padrino rake seed' 3) Visit the admin panel in the browser at '/admin'
  • 16. Why would someone choose to develop with Padrino VS Rails? From beginner... ● Sinatra is much easier to learn conceptually and in practice.
  • 17. Why would someone choose to develop with Padrino VS Rails? ... to advanced. ● Once applications reach a certain size [...], Sinatra begins to break down without some imposed structure, feature extensions and a framework to bring things together. ○ Nathan Esquenazi
  • 18. Why would someone choose to develop with Padrino VS Rails? Other reasons why you might want to take a look at Padrino: ● Benchmarks performance of Padrino vs Rails (memory footprint, speed) ● The ability to easily 'scale' up a Sinatra based app with more features and functionalities with Padrino modules & embedded apps (app within an app) ● In Rails, Sinatra is already used sometimes as a platform for building 'plugins' and extending Rails functionality ● Agnostic generators that generate a variety of components for your project (orm's, js, renderers, tests, etc...) ● Admin interface application that can be generated into your existing padrino application ("... not just the scaffold, but the whole house" -- to paraphrase Django)
  • 19. Why would someone choose to develop with Padrino VS Rails? Selling Padrino: ● My motivation? I like to touch all pieces of my stack on my own, so I use a framework where I can easily look 'under the hood'. ○ Florian Gilcher
  • 20. @victorbstan With help from the Padrino community & Special thanks to the Toronto Ruby Brigade