ro r trilogy-part-1
Post on 31-Oct-2014
476 Views
Preview:
DESCRIPTION
TRANSCRIPT
Amir Barylko RoR Trilogy Part I: A New Dev Hope
AMIR BARYLKO
THE ROR TRILOGYA NEW DEV HOPE
Amir Barylko RoR Trilogy Part I: A New Dev Hope
WHO AM I?
• Software quality expert
• Architect
•Developer
•Mentor
• Great cook
• The one who’s entertaining you for the next hour!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RESOURCES
• Email & Twitter : amir@barylko.com, @abarylko
• Slides: http://www.orthocoders.com/presentations
• Company Site: http://www.maventhought.com
• Try Ruby online: http://tryruby.org/
• Learn RoR online: http://railsforzombies.org/
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RUBY INTRODynamic languages
FeaturesSupportClassesMixins
Amir Barylko RoR Trilogy Part I: A New Dev Hope
DYNAMIC LANGUAGES
• High level
•Dynamically typed
• Runtime over compile time
• Closures
• Reflection
• Platform independent
Amir Barylko RoR Trilogy Part I: A New Dev Hope
WELCOME TO RUBY
• Created in mid-90s by “Matz” Matsumoto in Japan
• Smalltalk, Perl influences
•Dynamic typing
•Object Oriented
• Automatic memory management
• Several implementations: MRI, YARB, JRuby
• Totally free!!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RUBY FEATURES
• Everything is an expression
•Metaprogramming
• Closures
• Garbage collection
• Exceptions
•Operator overloading, flexible syntax
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RUBY SUPPORT
• Hundreds of books
• User conferences all over the world
• Active community (you can create a conference in your own city and top Ruby coders will go there to teach others, invite them and see)
• Lots of great web sites: basecamp, twitter, 43 things, hulu, scribd, slideshare, Justin.tv
Amir Barylko RoR Trilogy Part I: A New Dev Hope
CLASSES & OBJECTS
• Initializer and instance variablesclass Movie def initialize(name) @name = name end
def play puts %Q{Playing “#{@name}”. Enjoy!} endend
m = Movie.new(“Pulp fiction”)m.play
=> Playing “Pulp fiction”. Enjoy!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
CLASSES & OBJECTS II
• Attributesclass Movie # attr reader and writer attr_accesor :name
def initialize(name) @name = name endend
m = Movie.new('Brazil')m.name = “Pulp fiction”
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MIXINS
•One of the greatest Ruby features!
• You can define functions in Modules, and get them added to your classes.
• Great code reuse,
•Multiple inheritance alternative.
• Code organization
Amir Barylko RoR Trilogy Part I: A New Dev Hope
ENUMERABLE MIXIN
•Quote from the standard library documentation:
...The Enumerable mixin provides collection classes with several traversal and searching methods, and with the ability to sort.
The class must provide a method each, which yields successive members of the collection...
Amir Barylko RoR Trilogy Part I: A New Dev Hope
ENUMERABLE II
• It provides useful methods such as:
•map
• to_a
• take_while
• count
• inject
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MIXIN EXAMPLE
class MovieLibrary include Enumerable
def each(&block) contents.each(&block) endend
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RORWhat is it?
Convention over configurationModel View Controller
Code generationDependency Management
HTML 5 & UJS
Amir Barylko RoR Trilogy Part I: A New Dev Hope
WHAT IS ROR?
•Web application development framework
• Created by David Heinemeier Hansson
•With Rails, you would be done by now!
•Open Source & Multi platform
• Very easy to learn
• Comes with everything out of the box!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
CONVENTION OVER CONFIGURATION
• All applications share the same structure
• The application is generated by the rails command
• All the config files are ruby code
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MODEL VIEW CONTROLLER
•Model: represents the data
• Controllers: Manipulate the data and prepare it to be shown
• View: Shows the data with a particular view engine
Amir Barylko RoR Trilogy Part I: A New Dev Hope
CODE GENERATION
• Using rails command:
•Bootstrap: Generates basic structure
•Models: Generated models and tests
•Controllers: Generates controllers, views and tests
• Scaffolds: Generates models, controllers, views, routes, etc...
Amir Barylko RoR Trilogy Part I: A New Dev Hope
DEPENDENCY MANAGEMENT
• Gems are Ruby libraries
•Dependencies are managed with tool gem
• To install a gem just run: gem install xxxxxx
• Bundler is a gem to manage dependencies
• Just create a Gemfile and bundler will install all of them
Amir Barylko RoR Trilogy Part I: A New Dev Hope
HTML 5 & UNOBTRUSIVE JS
• Supports HTML 5 standards
• data-remote, data-method, data-config, etc...
• Supports many JS frameworks
• JS code associated to models to handle events, animations, etc
• Coffeescript!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
ROR GOODNESSCommon Structure
Automation Migrations
ActiveRecordTesting
Scaffolding
Amir Barylko RoR Trilogy Part I: A New Dev Hope
COMMON STRUCTURE
• app• assets: Stylesheets, javascript, images• controllers: Prepare the data for the views• helpers: Helper methods to render views• models: Represent our domain• views: Templates to be rendered• each controller has a folder with one template per method
• layouts:Base templates to surround the views
Amir Barylko RoR Trilogy Part I: A New Dev Hope
AUTOMATION
• Rake is a build tool (similar to ant, msbuild, maven)
• Has tasks that can be configured
•Out of the box has common tasks for database, testing, etc..
• List all the tasks: rake -T
• Very useful to automate tasks and to use in CI servers
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MIGRATIONS
• Track the database changes using code
•No need to use SQL
• Upgrades are easy
• Versioning is kept in the database
• Generated automatically when creating models
Amir Barylko RoR Trilogy Part I: A New Dev Hope
ACTIVE RECORD
• Relations (ActiveModel)
• Supports multiple databases
• Each table is a class
• All attributes are created dynamically
• Associations are declared by convention
• Each class has CRUD and query operations by default
Amir Barylko RoR Trilogy Part I: A New Dev Hope
TESTING OUT OF THE BOX
•Many testing frameworks available
•No additional effort to generate them
• Running them is part of the Rakefile (automation)
• Keep high quality all the way
Amir Barylko RoR Trilogy Part I: A New Dev Hope
SCAFFOLDING
• Generated automatically for CRUD operations
• Controllers
• Views
• Tests
• The template used can be replaced of modified
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MOVIE LIBRARYDemo
Amir Barylko RoR Trilogy Part I: A New Dev Hope
TOPICS
• Rails application structure
•Database Migrations
• Using scaffolds
•Model - View - Controllers
• Routing
• Ajax
Amir Barylko RoR Trilogy Part I: A New Dev Hope
MORE GOODNESS!HelpersPartials
Sass Routing
Amir Barylko RoR Trilogy Part I: A New Dev Hope
HELPERS
•Methods to assist in the view generation
• Reusable
• Associated to each controller
• Testable
Amir Barylko RoR Trilogy Part I: A New Dev Hope
PARTIALS
• Templates that can be shared
• Start with underscore “_”
• Can be rendered from views or controllers
Amir Barylko RoR Trilogy Part I: A New Dev Hope
SASS
•Quote from sass-lang.com:
Sass is an extension of CSS3, adding n e s t e d r u l e s , v a r i a b l e s , mixins,selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.
Amir Barylko RoR Trilogy Part I: A New Dev Hope
ROUTING
• Easy to configure using routes.rb
• Supports REST out of the box
• Easy to restrict actions
• Easy to alias routes
• Allows optional parameters in the routes
QUESTIONS?
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RESOURCES
• Email & Twitter : amir@barylko.com, @abarylko
• Slides: http://www.orthocoders.com/presentations
• Company Site: http://www.maventhought.com
• Try Ruby online: http://tryruby.org/
• Learn RoR online: http://railsforzombies.org/
Amir Barylko RoR Trilogy Part I: A New Dev Hope
RESOURCES II
Amir Barylko RoR Trilogy Part I: A New Dev Hope
CLOJURE TRAINING
•When: Nov 6, 7 & 8
•More info: http://www.maventhought.com
• Goal: Learn Clojure and functional programming with real hands on examples
top related