SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Athens
Ruby
Meetup
#4
Rails 3:
Derailing
Rails
Panagiotis Papadopoulos
@panosjee
http://6pna.com
Merb and Rails merge announced on December 23
2008
The hell freezed
High Expectations
Two and a half years later the merge is complete
A lot of new committers
Significant efforts by the Merb creator Yehuda Katz
Lots of rewrites
A new beast
New tricks to learn
More power to developers
Less opinionated thus derailed but still using strong
conventions
Less monkey patching (oh yes)
The story after Rails 3
Many people accused Rails of
being spaghetti code
Not any more...
Django infuelnces...
Less monkey patching.
The code is well organized and
modular.
You can reuse the components
you want, add yours and create
the Rails you want, ala carte
* you can always monkey patch, do
not worry!
Rails 3 is a top Rack citizen. You can mount any Rack or
even Sinatra in your app.
It is as simple as that:
Store::Application.routes.draw do |map|
root :to => proc { |env| [200, {}, ["Welcome"]] }
end
Or if you want a custom controller:
In your routes.rb
match "/processes" => ProcessesApp
In lib/process_app.rb
class ProcessesApp < ActionController::Metal
include ActionController::Rendering
Pure Rack Goodness
New Responders, less verbose
def new
@product = Product.new
respond_with @product
end
Redirect shortcuts
redirect_to @product, :
notice => "Successfully created
Permanent Cookies
Custom responeders
No more Metal, you can create your own controllers
Controllers in Rails 3
No more gem.config in environment.rb
Anyway all this code is moved to application.rb
But your gem dependencies now live in Gemfile
Bundler is the new way to solve the dependency hell
problem.
Bundler locks all used gems so when you clone the
project you get the same exactly gems and
dependencies
# Edit this Gemfile to bundle your application's dependencies.
source 'http://gemcutter.org'
gem "rails", "3.0.0.beta"
# ActiveRecord requires a database adapter. By default,
# Rails has selected sqlite3.
gem "sqlite3-ruby", :require => "sqlite3"
Gem dependecies. Bundler.
Forget script, say hello to rails
New Generators and Commands
Generators help you create *YOUR* convetions
The new ActionMailer is descentant of ActionController so
you no longer have to mixin your models and mailers.
class UserMailer < ActionMailer::Base
default :from => "eifion@asciicasts.com"
def registration_confirmation(user)
mail(:to => user.email, :subject => "Registered")
end
end
A new ActionMailer! At last!
Everything is escaped by default. Use <%=raw %> if
you want markup in your views.
First of all Rails 3 is not tight to Prototype. It is still the
default but you can use easily any major Javascript
library.
All helpers produce UJS code
In your views:
<%= link_to "Destroy", @product, :confirm => "Are you sure?", :method => :delete %>
Produces the following html code:
<a href="/products/8" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>
Unobtrusive JS using HTML5, XSS Security
ActiveRecord inherits from ActiveModel
You can use ActiveModel to build your own ORM
compatible with Rails
Query language is now AReL
Chain everything!
More details by Savvas
ActiveRecord
An awesome way to extend Rails apps!
Build plugins in no time!
Source: http://www.igvita.com/2010/08/04/rails-3-internals-railtie-creating-plugins/
Railties
Rails 3 bring
more options to
developers and
a better API to
build upon.
You still have
the Golden Path
or the Rails
defaults but you
face less
restrictions on
how to build
stuff
Huge performance gains
You better start off with
Ruby 1.9 using RVM
so that you migrate to
the new Ruby stack
Be careful with your gem and plugins selections, things are a
bit... edgy
Tested against other major
VMs such as Ruby 1.8, 1.9,
JRuby, Rubinious
Thank You!
@panosjee

Mais conteúdo relacionado

Mais procurados

Be happy with Ruby on Rails - CEUNSP Itu
Be happy with Ruby on Rails - CEUNSP ItuBe happy with Ruby on Rails - CEUNSP Itu
Be happy with Ruby on Rails - CEUNSP Itu
Lucas Renan
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJS
Blake Newman
 

Mais procurados (19)

Rack
RackRack
Rack
 
Cocoa on-rails-3rd
Cocoa on-rails-3rdCocoa on-rails-3rd
Cocoa on-rails-3rd
 
Rail3 intro 29th_sep_surendran
Rail3 intro 29th_sep_surendranRail3 intro 29th_sep_surendran
Rail3 intro 29th_sep_surendran
 
1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)
 
CakePHP SessionAcl Component
CakePHP SessionAcl ComponentCakePHP SessionAcl Component
CakePHP SessionAcl Component
 
Gigigo Rails Workshop
Gigigo Rails WorkshopGigigo Rails Workshop
Gigigo Rails Workshop
 
Deploying Rails Apps with Capistrano
Deploying Rails Apps with CapistranoDeploying Rails Apps with Capistrano
Deploying Rails Apps with Capistrano
 
ZfDayIt 2014 - There is a module for everything
ZfDayIt 2014 - There is a module for everythingZfDayIt 2014 - There is a module for everything
ZfDayIt 2014 - There is a module for everything
 
Apikit in studio
Apikit in studioApikit in studio
Apikit in studio
 
Web service with Laravel
Web service with LaravelWeb service with Laravel
Web service with Laravel
 
Top laravel packages to install handpicked list from expert
Top laravel packages to install handpicked list from expertTop laravel packages to install handpicked list from expert
Top laravel packages to install handpicked list from expert
 
Angular & rails
Angular & railsAngular & rails
Angular & rails
 
Task scheduling in laravel 8 tutorial
Task scheduling in laravel 8 tutorialTask scheduling in laravel 8 tutorial
Task scheduling in laravel 8 tutorial
 
Rails 3
Rails 3Rails 3
Rails 3
 
Be happy with Ruby on Rails - CEUNSP Itu
Be happy with Ruby on Rails - CEUNSP ItuBe happy with Ruby on Rails - CEUNSP Itu
Be happy with Ruby on Rails - CEUNSP Itu
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJS
 
Sinatra
SinatraSinatra
Sinatra
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5
 
Sinatra
SinatraSinatra
Sinatra
 

Destaque

Sakai11 Citations BOF Introductory Slides
Sakai11 Citations BOF Introductory SlidesSakai11 Citations BOF Introductory Slides
Sakai11 Citations BOF Introductory Slides
Jon W. Dunn
 
Financial Analysis - Kubota corporation manufactures industrial machinery,…
Financial Analysis - Kubota corporation manufactures industrial machinery,…Financial Analysis - Kubota corporation manufactures industrial machinery,…
Financial Analysis - Kubota corporation manufactures industrial machinery,…
BCV
 
Hied blackboard dell_whitepaper
Hied blackboard dell_whitepaperHied blackboard dell_whitepaper
Hied blackboard dell_whitepaper
Steve Feldman
 

Destaque (15)

Fundamental Analysis & Analyst Recommendations - DAXglobal® China Urbanization
Fundamental Analysis & Analyst Recommendations - DAXglobal® China UrbanizationFundamental Analysis & Analyst Recommendations - DAXglobal® China Urbanization
Fundamental Analysis & Analyst Recommendations - DAXglobal® China Urbanization
 
Sakai11 Citations BOF Introductory Slides
Sakai11 Citations BOF Introductory SlidesSakai11 Citations BOF Introductory Slides
Sakai11 Citations BOF Introductory Slides
 
Science Sandbox
Science SandboxScience Sandbox
Science Sandbox
 
Fundamental Equity Analysis - World Gold Miners
Fundamental Equity Analysis - World Gold MinersFundamental Equity Analysis - World Gold Miners
Fundamental Equity Analysis - World Gold Miners
 
Fundamental Equity Analysis - TOPIX 100 Index Members (TPX100 Index)
Fundamental Equity Analysis - TOPIX 100 Index Members (TPX100 Index)Fundamental Equity Analysis - TOPIX 100 Index Members (TPX100 Index)
Fundamental Equity Analysis - TOPIX 100 Index Members (TPX100 Index)
 
Financial Analysis - Kubota corporation manufactures industrial machinery,…
Financial Analysis - Kubota corporation manufactures industrial machinery,…Financial Analysis - Kubota corporation manufactures industrial machinery,…
Financial Analysis - Kubota corporation manufactures industrial machinery,…
 
Hied blackboard dell_whitepaper
Hied blackboard dell_whitepaperHied blackboard dell_whitepaper
Hied blackboard dell_whitepaper
 
Zensko Telo
Zensko TeloZensko Telo
Zensko Telo
 
Financial Analysis - China Communications Construction Company Ltd. is a tran...
Financial Analysis - China Communications Construction Company Ltd. is a tran...Financial Analysis - China Communications Construction Company Ltd. is a tran...
Financial Analysis - China Communications Construction Company Ltd. is a tran...
 
Ruby openfest
Ruby openfestRuby openfest
Ruby openfest
 
Sfalma Pitch
Sfalma PitchSfalma Pitch
Sfalma Pitch
 
Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby Me
 
Project Connect: Connect and Collaborate Session A- October 1
Project Connect: Connect and Collaborate Session A- October 1Project Connect: Connect and Collaborate Session A- October 1
Project Connect: Connect and Collaborate Session A- October 1
 
Financial Analysis - Banque Cantonale Vaudoise - Banque Cantonale Vaudoise (B...
Financial Analysis - Banque Cantonale Vaudoise - Banque Cantonale Vaudoise (B...Financial Analysis - Banque Cantonale Vaudoise - Banque Cantonale Vaudoise (B...
Financial Analysis - Banque Cantonale Vaudoise - Banque Cantonale Vaudoise (B...
 
D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#
 

Semelhante a Derailing rails

Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3
Clinton Dreisbach
 

Semelhante a Derailing rails (20)

Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817
 
Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3
 
Migration from Rails2 to Rails3
Migration from Rails2 to Rails3Migration from Rails2 to Rails3
Migration from Rails2 to Rails3
 
Rails3 changesets
Rails3 changesetsRails3 changesets
Rails3 changesets
 
Introduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman OrtegaIntroduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman Ortega
 
Create a new project in ROR
Create a new project in RORCreate a new project in ROR
Create a new project in ROR
 
rails.html
rails.htmlrails.html
rails.html
 
rails.html
rails.htmlrails.html
rails.html
 
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails
 
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Rails web api 开发
Rails web api 开发Rails web api 开发
Rails web api 开发
 
Introduction To Ruby On Rails
Introduction To Ruby On RailsIntroduction To Ruby On Rails
Introduction To Ruby On Rails
 
Get Going With RVM and Rails 3
Get Going With RVM and Rails 3Get Going With RVM and Rails 3
Get Going With RVM and Rails 3
 
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
[Srijan Wednesday Webinar] Rails 5: What's in It for Me?
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails
 
Ruby off Rails (english)
Ruby off Rails (english)Ruby off Rails (english)
Ruby off Rails (english)
 
Phoenix for Rails Devs
Phoenix for Rails DevsPhoenix for Rails Devs
Phoenix for Rails Devs
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Derailing rails

  • 2. Merb and Rails merge announced on December 23 2008 The hell freezed High Expectations Two and a half years later the merge is complete A lot of new committers Significant efforts by the Merb creator Yehuda Katz Lots of rewrites A new beast New tricks to learn More power to developers Less opinionated thus derailed but still using strong conventions Less monkey patching (oh yes) The story after Rails 3
  • 3. Many people accused Rails of being spaghetti code
  • 4. Not any more... Django infuelnces...
  • 5. Less monkey patching. The code is well organized and modular. You can reuse the components you want, add yours and create the Rails you want, ala carte * you can always monkey patch, do not worry!
  • 6. Rails 3 is a top Rack citizen. You can mount any Rack or even Sinatra in your app. It is as simple as that: Store::Application.routes.draw do |map| root :to => proc { |env| [200, {}, ["Welcome"]] } end Or if you want a custom controller: In your routes.rb match "/processes" => ProcessesApp In lib/process_app.rb class ProcessesApp < ActionController::Metal include ActionController::Rendering Pure Rack Goodness
  • 7. New Responders, less verbose def new @product = Product.new respond_with @product end Redirect shortcuts redirect_to @product, : notice => "Successfully created Permanent Cookies Custom responeders No more Metal, you can create your own controllers Controllers in Rails 3
  • 8. No more gem.config in environment.rb Anyway all this code is moved to application.rb But your gem dependencies now live in Gemfile Bundler is the new way to solve the dependency hell problem. Bundler locks all used gems so when you clone the project you get the same exactly gems and dependencies # Edit this Gemfile to bundle your application's dependencies. source 'http://gemcutter.org' gem "rails", "3.0.0.beta" # ActiveRecord requires a database adapter. By default, # Rails has selected sqlite3. gem "sqlite3-ruby", :require => "sqlite3" Gem dependecies. Bundler.
  • 9. Forget script, say hello to rails New Generators and Commands Generators help you create *YOUR* convetions
  • 10. The new ActionMailer is descentant of ActionController so you no longer have to mixin your models and mailers. class UserMailer < ActionMailer::Base default :from => "eifion@asciicasts.com" def registration_confirmation(user) mail(:to => user.email, :subject => "Registered") end end A new ActionMailer! At last!
  • 11. Everything is escaped by default. Use <%=raw %> if you want markup in your views. First of all Rails 3 is not tight to Prototype. It is still the default but you can use easily any major Javascript library. All helpers produce UJS code In your views: <%= link_to "Destroy", @product, :confirm => "Are you sure?", :method => :delete %> Produces the following html code: <a href="/products/8" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a> Unobtrusive JS using HTML5, XSS Security
  • 12. ActiveRecord inherits from ActiveModel You can use ActiveModel to build your own ORM compatible with Rails Query language is now AReL Chain everything! More details by Savvas ActiveRecord
  • 13. An awesome way to extend Rails apps! Build plugins in no time! Source: http://www.igvita.com/2010/08/04/rails-3-internals-railtie-creating-plugins/ Railties
  • 14. Rails 3 bring more options to developers and a better API to build upon. You still have the Golden Path or the Rails defaults but you face less restrictions on how to build stuff Huge performance gains You better start off with Ruby 1.9 using RVM so that you migrate to the new Ruby stack Be careful with your gem and plugins selections, things are a bit... edgy Tested against other major VMs such as Ruby 1.8, 1.9, JRuby, Rubinious Thank You! @panosjee