Ruby Gem Internals by Examples

Size: px
Start display at page:

Download "Ruby Gem Internals by Examples"

Transcription

1 SF Software Design in Ruby Meetup Group Ruby Gem Internals by Examples Ben Zhang, 1/14/2014

2 Types of Ruby Gem Features Global Singleton typhoeus, twitter Single Web Feature (MVC method adding) will_piginate, simple_form Mountable Engine rails_admin, resque Global Observers airbrake, newrelic_rpm Command Line Tool rspec, html2haml

3 Choose a Good Interface will_paginate Post.paginate(:page => params[:page], :per_page => 30) kaminari Post.order(:name).page(params[:page]). per_page(30) class Post < ActiveRecord::Base self.per_page = 10 class Post < ActiveRecord::Base paginates_per 50 <%= %> <%= %>

4 Configuration Options: Outcome Kaminari.configure do config config.default_per_page = 25 config.max_per_page = nil

5 Configuration Options: The How module Kaminari def self.configure(&block) = Kaminari::Configuration.new def class Configuration include ActiveSupport::Configurable config_accessor :default_per_page {} config_accessor :max_per_page {}

6 Gem Initialization I #lib/kaminari.rb require 'kaminari/config' module Kaminari require 'kaminari/helpers/paginator' require... if defined? Rails begin require 'kaminari/railtie' require 'rails' require 'kaminari/engine' rescue LoadError #do nothing #lib/kaminari/railtie.rb module Kaminari class Railtie < ::Rails::Railtie if!defined?(rails) &&!defined?(sinatra) initializer 'kaminari' do _app $stderr.puts no framework detected. Kaminari::Hooks.init

7 Gem Initialization II module Kaminari class Hooks def self.init ActiveSupport.on_load(:active_record) do require 'kaminari/models/active_record_extension' ::ActiveRecord::Base.s :include, Kaminari::ActiveRecordExtension begin; require 'data_mapper'; rescue LoadError; if defined? ::DataMapper require 'kaminari/models/data_mapper_extension' ::DataMapper::Collection.s :include, Kaminari::DataMapperExtension::Collection

8 Add methods to controllers module YourGem class Feature def user_agent(request) ApplicationController.s :include, YourGem::Feature class UsersController < ApplicationController def index user_agent(request)

9 Add methods to models # in your code class Artist include Mongoid::Document field :name, type: String embeds_many :instruments # in your gem module Mongoid class Document def self.embeds_many(association) def self.field(field, options={})

10 Add methods to views #lib/kaminari.rb require 'kaminari/helpers/action_view_extension' #lib/kaminari/helpers/action_view_extension.rb module Kaminari module ActionViewExtension def paginate(scope, options = {}, &block) #lib/kaminari/hooks.rb module Kaminari class Hooks def self.init ActiveSupport.on_load(:action_view) do ::ActionView::Base.s :include, Kaminari::ActionViewExtension

11 Add a rake task #lib/erb2haml.rb require 'erb2haml/railtie' if defined?(rails) #lib/erb2haml/railtie.rb require 'erb2haml' require 'rails' module ERb2Haml class Railtie < Rails::Railtie rake_tasks do load 'erb2haml/railties/erb2haml.rake' #lib/erb2haml/railties/erb2haml.rake require 'find' namespace :haml do desc "Perform bulk conversion of all html. erb files to Haml in views folder" task :replace_erbs do Find.find("app/views/") do path #convert files

12 Gem customization approaches YAML file locale files DSL block before {}, after {}, scriptorator Subclassing devise Method Override(reopen gem class) less preferred

13 Gem customization example class RegistrationsController < Devise::RegistrationsController protected def after_update_path_for(resource) user_path(resource) devise_for :users, :controllers => { :registrations => :registrations }

14 A Good Open Source Contributor follows conventions others established cares about backward compatibility has 100% test coverage of his code knows when to meta-program excels at object oriented design is familiar with various design patterns

15 Recommed Readings

Demystifying Rails Plugin Development

Demystifying Rails Plugin Development Demystifying Rails Plugin Development Nick Plante :: Voices That Matter Professional Ruby Conference November 18th, 2008 Obligatory Introduction Plugins are generalized, reusable code libraries Ext or

More information

Ruby on Rails TKK, Otto Hilska

Ruby on Rails TKK, Otto Hilska Ruby on Rails intro @ TKK, 25.5.2009 Otto Hilska 1 Today s agenda 1. The Ruby programming language 2. Ruby on Rails framework 3. An example project 2 About me Started Nodeta Oy in 2004 10+ employees always

More information

LOGGING WITH. Alex Stupka, Developer

LOGGING WITH. Alex Stupka, Developer LOGGING WITH Alex Stupka, Developer astupka@customink.com 1.Introduction 1.Developer at Customink 2.If you have any questions, feel free to stop me and ask CUSTOMINK USAGE Products and Services, EComm,

More information

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies Ruby on Rails 3 Robert Crida Stuart Corbishley Clue Technologies Topic Overview What is Rails New in Rails 3 New Project Generators MVC Active Record UJS RVM Bundler Migrations Factory Girl RSpec haml

More information

Client Side MVC with Backbone & Rails. Tom

Client Side MVC with Backbone & Rails. Tom Client Side MVC with Backbone & Rails Tom Zeng @tomzeng tom@intridea.com Client Side MV* with Backbone & Rails Benefits of Client Side MVC Backbone.js Introduction Client Side MV* Alternatives Backbone

More information

Rails: Views and Controllers

Rails: Views and Controllers Rails: Views and Controllers Computer Science and Engineering College of Engineering The Ohio State University Lecture 18 Recall: Rails Architecture Wiring Views and Controllers A controller is just an

More information

Lecture 4. Ruby on Rails 1 / 49

Lecture 4. Ruby on Rails 1 / 49 Lecture 4 Ruby on Rails 1 / 49 Client-Server Model 2 / 49 What is it? A client (e.g. web browser, phone, computer, etc.) sends a request to a server Request is an HTTP request Stands for HyperText Transfer

More information

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide!

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide! Rails Guide Hey, thanks a lot for picking up this guide! I created this guide as a quick reference for when you are working on your projects, so you can quickly find what you need & keep going. Hope it

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

JRuby and Ioke. On Google AppEngine. Ola Bini

JRuby and Ioke. On Google AppEngine. Ola Bini JRuby and Ioke On Google AppEngine Ola Bini ola.bini@gmail.com http://olabini.com/blog Vanity slide ThoughtWorks consultant/developer/programming language geek JRuby Core Developer From Stockholm, Sweden

More information

CSCI-2320 Web Programming: Ruby on Rails

CSCI-2320 Web Programming: Ruby on Rails CSCI-2320 Web Programming: Ruby on Rails Mohammad T. Irfan Plan u Model-View-Controller (MVC) framework of web programming u Ruby on Rails 1 Ruby on Rails u Developed by David Hansson released 2004 u MVC

More information

CS169.1x Lecture 6: Basic Rails" Fall 2012"

CS169.1x Lecture 6: Basic Rails Fall 2012 CS169.1x Lecture 6: Basic Rails" Fall 2012" 1" The Database is Golden Contains valuable customer data don t want to test your app on that! Rails solution: development, production and test environments

More information

Domain-Driven Rails Redux. Pat Maddox RailsConf 2010

Domain-Driven Rails Redux. Pat Maddox RailsConf 2010 Domain-Driven Rails Redux Pat Maddox RailsConf 2010 A Short Story Software is a learning process Design matters Complexity inherent in the system All complexity not created equal I need to do because the

More information

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES David Worth dave@highgroove.com (email) - @highgroovedave (twitter) Or why it s ok to write simple frameworks for complicated

More information

Typus Documentation. Release beta. Francesc Esplugas

Typus Documentation. Release beta. Francesc Esplugas Typus Documentation Release 4.0.0.beta Francesc Esplugas November 20, 2014 Contents 1 Key Features 3 2 Support 5 3 Installation 7 4 Configuration 9 4.1 Initializers................................................

More information

Rails: MVC in action

Rails: MVC in action Ruby on Rails Basic Facts 1. Rails is a web application framework built upon, and written in, the Ruby programming language. 2. Open source 3. Easy to learn; difficult to master. 4. Fun (and a time-saver)!

More information

Extending Rails: Understanding and Building Plugins. Clinton R. Nixon

Extending Rails: Understanding and Building Plugins. Clinton R. Nixon Extending Rails: Understanding and Building Plugins Clinton R. Nixon Welcome! Welcoming robin by Ian-S (http://flickr.com/photos/ian-s/2301022466/) What are we going to talk about? The short How plugins

More information

A mockup of a user s Home page with a status feed.

A mockup of a user s Home page with a status feed. 530 Chapter 11: Following Users Figure 11.18 A mockup of a user s Home page with a status feed. 11.3.1 Motivation and Strategy The basic idea behind the feed is simple. Figure 11.19 shows a sample microposts

More information

Day 8: 7/June/2012. Log-in Authentication

Day 8: 7/June/2012. Log-in Authentication Day 8: 7/June/2012 Log-in Authentication p Learn authentication so that only specific users can use the Web information of the system. p We use Devise to p Add one line to the file project/gemfile gem

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

Lecture 4. Ruby on Rails 1 / 52

Lecture 4. Ruby on Rails 1 / 52 Lecture 4 Ruby on Rails 1 / 52 Homeworks 2 & 3 Grades were released for homework 2 Homework 3 was due last night Everyone got a style freebie since my default setup ignores spec files and I didn't change

More information

Where we are. For example. Extensions. Authorization and Testing

Where we are. For example. Extensions. Authorization and Testing Where we are Authorization and Testing Last time: We added the ability of users to log in, and made sure that we treated their passwords in a secure fashion. INFO 2310: Topics in Web Design and Programming

More information

DRYing Out MVC (ESaaS 5.1)"

DRYing Out MVC (ESaaS 5.1) DRYing Out MVC (ESaaS 5.1)" Armando Fox" 2013 Armando Fox & David Patterson, all rights reserved Don t Repeat Yourself but how?" Goal: enforce that movie names must be less than 40 characters" Call a check

More information

Agile Web Development with Rails 5

Agile Web Development with Rails 5 Extracted from: Agile Web Development with Rails 5 This PDF file contains pages extracted from Agile Web Development with Rails 5, published by the Pragmatic Bookshelf. For more information or to purchase

More information

test with :) chen songyong

test with :) chen songyong test with :) chen songyong about me about me Remote worker! Worked in start-ups, web consultancies, banks and digital agencies! @aquajach in Twitter & Github test in old days test in old days do you write

More information

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub GraphQL Concepts & Challenges - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub Rails API WHY - You have your Rails app, why bother with an API? - You have clients.

More information

Day 3: 26/April/2012 Scaffolding Generation of Skeletons; Test run Memopad

Day 3: 26/April/2012 Scaffolding Generation of Skeletons; Test run Memopad Day 3: 26/April/2012 Scaffolding Generation of Skeletons; Test run Memopad p Generate WEB screens of the MemoPad Database Application n Setting up for Database Connection n Automatic generation of DB Files

More information

Improve Cookiebased. with Decorator Pattern

Improve Cookiebased. with Decorator Pattern Improve Cookiebased Session with Decorator Pattern @ ConFoo Montreal 2018-03-08 by Jian Weihang Improve Cookie-based Session with Decorator Pattern 1 Bonjour! Improve Cookie-based Session with Decorator

More information

Rails Engines. Use Case. The Implementation

Rails Engines. Use Case. The Implementation Rails Engines Rails engines range from simple plugins to powerful micro-applications. The discussions we ve had so far about Railties are closely related to the function of a Rails engine. One interesting

More information

Code Generation. The Safety Scissors Of Metaprogramming

Code Generation. The Safety Scissors Of Metaprogramming Code Generation The Safety Scissors Of Metaprogramming Ruby2Ruby (lambda do puts hello world end).to_ruby class Widget < ActiveRecord::Base end Ruby2Ruby.translate(Widget) class Widget < ActiveRecord::Base

More information

Validations vs. Filters

Validations vs. Filters Validations vs. Filters Advice (DRYness) Validation Filter Check invariants on model Check conditions for allowing controller action to run Pointcut AR model lifecycle hooks Before and/or after any public

More information

Model-View-Controller (MVC)

Model-View-Controller (MVC) Model-View-Controller (MVC) with Ruby on Rails Software Languages Team University of Koblenz-Landau Ralf Lämmel and Andrei Varanovich MVC - a classic definition The Model is the application object The

More information

Web System Development by Ruby on Rails. Day 3(4/Oct/2012) First Project Internationalization

Web System Development by Ruby on Rails. Day 3(4/Oct/2012) First Project Internationalization Web System Development by Ruby on Rails Day 3(4/Oct/2012) First Project Internationalization Today s Goal (Continued) Run Rails 3 on CentOS, and generate the first project. Generate the bi-lingual screen

More information

The Rails Initialization Process

The Rails Initialization Process The Rails Initialization Process December 25, 2014 This guide explains the internals of the initialization process in Rails as of Rails 4. It is an extremely in-depth guide and recommed for advanced Rails

More information

COM401 Software Engineering Laboratory

COM401 Software Engineering Laboratory Computer Engineering Department COM401 Software Engineering Laboratory November 04, 2014 LAB-3: Rails Introduction Time: 2 lab hours Objectives: Practice with Ruby Symbols Routes MVC pattern CRUD operations

More information

Philadelphia Emerging Technology For The. First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers.

Philadelphia Emerging Technology For The. First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers. Philadelphia Emerging Technology For The First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers Enterprise Aaron Patterson @tenderlove Rails Core Team Ruby Core Team enterprise

More information

Utilisez Mutant / Mutest pour améliorer vos tests, votre code Sigilium

Utilisez Mutant / Mutest pour améliorer vos tests, votre code Sigilium Utilisez Mutant / Mutest pour améliorer vos tests, votre code Sigilium @getsigilium Sigilium Gestion centralisée des Signatures Emails @thomasdarde @getsigilium Parmi nos clients: Motul Nicolas Prost,

More information

RSpec API Documentation. Eric

RSpec API Documentation. Eric RSpec API Documentation Eric Oestrich @ericoestrich Who? Zipmark - zipmark.com Zipmark makes it simple and safe to quickly pay your rent, bills, and even your fris for that coffee they bought you. SmartLogic

More information

Boldface numbers indicate illustrations, code listings, and tables.

Boldface numbers indicate illustrations, code listings, and tables. Index Boldface numbers indicate illustrations, code listings, and tables. A ActiveRecord, class in Ruby, 80-82, 84, 86, 88, 90 ActiveXMLService, class in Ruby, 80-82, 84, 90 Agile development, 109-110

More information

The Dark Art. of Rails Plugins. James Adam. reevoo.com

The Dark Art. of Rails Plugins. James Adam. reevoo.com The Dark Art of Rails Plugins reevoo.com James Adam This could be you! I m hacking ur Railz appz!!1! Photo: http://flickr.com/photos/toddhiestand/197704394/ Anatomy of a plugin Photo: http://flickr.com/photos/guccibear2005/206352128/

More information

RACK / SSO. and a little bit about the Bundler. Tuesday, December 1, 2009 hello hello

RACK / SSO. and a little bit about the Bundler. Tuesday, December 1, 2009 hello hello RACK / SSO and a little bit about the Bundler hello hello COREY DONOHOE @atmos / atmos@atmos.org i m a software developer and open source participant for a number of years this is me in hawaii last month

More information

Cheap, Fast, and Good You can have it all with Ruby on Rails

Cheap, Fast, and Good You can have it all with Ruby on Rails Cheap, Fast, and Good You can have it all with Ruby on Rails Brian McCallister brianm@ninginc.com http://www.ning.com/ What is Ruby? Dynamic and Interpreted Strong support for OO programming Everything

More information

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap Strategies for Rapid Web Prototyping Ruby on Rails Strategies for Rapid Web Prototyping DRY: Don't repeat yourself Convention over Configuration Separation of Concern Templating MVC: Model View Controler

More information

INDEX. Symbols & Numbers

INDEX. Symbols & Numbers INDEX Symbols & Numbers & (ampersand), 166, 167 && (and operator), 85, 93 * (asterisk), 251 252, 260 *?, 260 @ (at sign), 23, 100 @@ (class variables), 23, 100 \ (line continuation character), 297 \B,

More information

Hello, world! 3.1. Ruby on Rails Web SimpleGreeter Hello, world! Rails SimpleGreeter Web Rails projects. ruby $ mkdir -p ~/projects

Hello, world! 3.1. Ruby on Rails Web SimpleGreeter Hello, world! Rails SimpleGreeter Web Rails projects. ruby $ mkdir -p ~/projects 3 Hello, world! Ruby on Rails Web SimpleGreeter Hello, world! 3.1 Rails SimpleGreeter Web Rails projects OIAX BOOKS Ruby on Rails 5.0 $ mkdir -p ~/projects ruby 2.3.1 15 3 Hello, world! $ cd ~/projects

More information

Ruby on Rails 3.1 Release Notes

Ruby on Rails 3.1 Release Notes Ruby on Rails 3.1 Release Notes December 25, 2014 Highlights in Rails 3.1: Streaming Reversible Migrations Assets Pipeline jquery as the default JavaScript library These release notes cover only the major

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Software Engineering II WS 2016/17 Arian Treffer arian.treffer@hpi.de Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby

More information

Japan on Rails. Name: Akira Matsuda GitHub: amatsuda

Japan on Rails. Name: Akira Matsuda GitHub: amatsuda Japan on Rails Name: Akira Matsuda Twitter: @a_matsuda GitHub: amatsuda Index The Problems The Communities Ruby in Japan Rails in Japan % whoami whoami A Community Leader Freelance Railer - A Programmer

More information

Ruby on Rails 3.2 Release Notes

Ruby on Rails 3.2 Release Notes Ruby on Rails 3.2 Release Notes January 13, 2015 Highlights in Rails 3.2: Faster Development Mode New Routing Engine Automatic Query Explains Tagged Logging These release notes cover only the major changes.

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Keven Richly keven.richly@hpi.de Software Engineering II WS 2017/18 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Testing PDI solutions

Testing PDI solutions Testing PDI solutions Slawomir Chodnicki BI Consultant slawo@twineworks.com The sample project. -- bin # entry point scripts -- environments # environment configuration -- etl # ETL solution `-- spec #

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Ralf Teusner ralf.teusner@hpi.de Software Engineering II WS 2018/19 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Table of Contents EVALUATION COPY

Table of Contents EVALUATION COPY Table of Contents What is Ruby on Rails?... 1-2 Overview of Rails Components... 1-3 Installing Rails... 1-5 A Simple Rails Application... 1-6 Starting the Rails Server... 1-8 Static Pages Within a Rails

More information

RSpec Core Project: RSpec Core 2.11 Publisher: RSpec. Issues. Open Feedback Dialog. rspec-core provides the structure for RSpec code examples:

RSpec Core Project: RSpec Core 2.11 Publisher: RSpec. Issues. Open Feedback Dialog. rspec-core provides the structure for RSpec code examples: Open Feedback Dialog Project: RSpec Core 2.11 Publisher: RSpec RSpec Core 2.11 rspec-core provides the structure for RSpec code examples: describe Account do it "has a balance of zero when first opened"

More information

RingBase. Design Specification. March 4, Chandra Krintz CS 189A. Wednesday 6PM. Date March 4, 2014 Mentor Colin Kelley

RingBase. Design Specification. March 4, Chandra Krintz CS 189A. Wednesday 6PM. Date March 4, 2014 Mentor Colin Kelley RingBase Design Specification March 4, 2014 Group Name: RingBase Instructor Course Lab Section Teaching Assistant Chandra Krintz CS 189A Wednesday 6PM Geoffrey Douglas Date March 4, 2014 Mentor Colin Kelley

More information

iflame INSTITUTE OF TECHNOLOGY

iflame INSTITUTE OF TECHNOLOGY Web Development Ruby On Rails Duration: 3.5 Month Course Overview Ruby On Rails 4.0 Training From Iflame Allows You To Build Full Featured, High Quality, Object Oriented Web Apps. Ruby On Rails Is A Full

More information

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Agenda 2 Ruby & Ruby on Rails What is Ruby on Rails? A few words about Ruby Core components RESTful architecture Active Record Your

More information

Lecture 3. Miscellaneous Ruby and Testing

Lecture 3. Miscellaneous Ruby and Testing Lecture 3 Miscellaneous Ruby and Testing 1 Sublime Text Guide I wrote a quick Sublime Text Guide that will help with Rubocop offenses It ll walk you through: Using spaces instead of tabs by default Using

More information

Lecture 3. Miscellaneous Ruby and Testing 1 / 48

Lecture 3. Miscellaneous Ruby and Testing 1 / 48 Lecture 3 Miscellaneous Ruby and Testing 1 / 48 Homework 1 Grades were released! TAs provided feedback on best practices, but did not take off points Keep the comments in mind for future assignments! Any

More information

Here are some figures to consider while answering the following questions.

Here are some figures to consider while answering the following questions. Here are some figures to consider while answering the following questions. Figure 1. Example page from Music Catalog web app. Figure 2. config/routes.rb Figure 3. Output of rake routes command. Figure

More information

Chado on Rails. a framework to simplify development on the Chado schema. Justin Reese / Chris Childers

Chado on Rails. a framework to simplify development on the Chado schema. Justin Reese / Chris Childers Chado on Rails a framework to simplify development on the Chado schema Justin Reese / Chris Childers Some links: These slides: http://tinyurl.com/chadoonrails Source code, have a look: svn co http://chadoonrails.rubyforge.org/svn/trunk

More information

Don t Repeat Yourself Repeat Others

Don t Repeat Yourself Repeat Others Don t Repeat Yourself Repeat Others RailsConf Baltimore, MD June 8, 2010 John Nunemaker Ordered List Why? Why? I am obsessed with improving Why? I am obsessed with improving I have learned a lot of late

More information

Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved

Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved Events" What: occurrences that affect the user interface" User interacts with a page element" Previously-set timer

More information

User Authentication and Session Control

User Authentication and Session Control User Authentication and Session Control CITS3403 Web & Internet Technologies Includes material from Agile Web Development with Rails, 3rd Ed, 2008 and 4 th Ed 2011, 2012 The Pragmatic Programmers. Slides

More information

ConJobs: Part 1 - Program your receipt printer

ConJobs: Part 1 - Program your receipt printer ConJobs: Part 1 - Program your receipt printer Step 1: Prepare thermal printer Cut wires and connect the power to the printer. Screw the wires down from the power adapter. Check that the green light flashes,

More information

Wednesday, May 18, Before I Begin...

Wednesday, May 18, Before I Begin... Before I Begin... @jonleighton I José Double Dream Hands: SO INTENSE ZOMG!!! HAPPY RAILS CONF Aaron Patterson @tenderlove AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual

More information

Action Mailer Basics

Action Mailer Basics Action Mailer Basics January 13, 2015 This guide provides you with all you need to get started in sing and receiving emails from and to your application, and many internals of Action Mailer. It also covers

More information

CHORDS: Cloud-Hosted Real-time Data

CHORDS: Cloud-Hosted Real-time Data CHORDS: Cloud-Hosted Real-time Data Services for the Geosciences Mike Daniels (NCAR), Branko Kerkez (UMich), V. Chandrasekar (CSU), Sara Graves (UAH), D. Sarah Stamps (VT), Aaron Botnick (NCAR), Charlie

More information

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011 Toby Crawley Creative Commons BY-SA 3.0 Charlotte.rb May 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To convert you all to TorqueBox users! TorqueBox

More information

Ruby on Rails. Origin Drive Destination

Ruby on Rails. Origin Drive Destination Ruby on Rails Origin Drive Destination Rails Just enough stuff to make the creation of database-backed web applications tolerable Rails Just enough stuff to make the creation of database-backed web applications

More information

Ruby%on%Rails% Ruby%on%Rails% %,% 1

Ruby%on%Rails% Ruby%on%Rails% %,% 1 Ruby%on%Rails% by#@tonytonyjan Ruby%on%Rails% %,% 1 / /tonytonyjan tonytonyjan.net Ruby-on-Rails- TJDict-Chrome- Rails-Girls-Taipei-1~5- Ruby%on%Rails% %,% 2 Ruby&(Rails) C&(Qt) Java&(Swing) Network&Programming

More information

Lecture 3. Miscellaneous Ruby and Testing 1 / 40

Lecture 3. Miscellaneous Ruby and Testing 1 / 40 Lecture 3 Miscellaneous Ruby and Testing 1 / 40 Homework 1 Grades were released! TAs provided feedback on best practices, but did not take off points Keep the comments in mind for future assignments! Any

More information

Groovy & Grails in Depth

Groovy & Grails in Depth Groovy & Grails in Depth Simplifying Java EE with Grails Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Speaker s qualifications Graeme

More information

Basking in the. by Micah Martin 8th Light, Inc. Copyright 2009 Micah Martin

Basking in the. by Micah Martin 8th Light, Inc. Copyright 2009 Micah Martin Basking in the by Micah Martin 8th Light, Inc. Limelight is... (Ruby on the Desktop) Ideas From The Web Ideas From The Web Ideas From The Web Ideas From The Web Theater Metaphor http://jacatering.com/images/theater.jpg

More information

Toby Crawley. Creative Commons BY-SA 3.0. Raleigh.rb April 2011

Toby Crawley. Creative Commons BY-SA 3.0. Raleigh.rb April 2011 Toby Crawley Creative Commons BY-SA 3.0 Raleigh.rb April 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To have you all downloading TorqueBox right after

More information

RSPec Documentation. 4. Scenario Testing Examples of OAR REST APIs using Rspec

RSPec Documentation. 4. Scenario Testing Examples of OAR REST APIs using Rspec RSPec Documentation Contents: 1. Introduction to Rspec - Installing Rspec Gem (Getting Started) - Terminology used in Rspec 2. Writing Simple Rspec Tests 3. Running Rspec Testfiles 4. Scenario Testing

More information

Cucumber 3.0 and Beyond

Cucumber 3.0 and Beyond Cucumber 3.0 and Beyond Thomas Haver tjhaver@gmail.com Abstract Cucumber is a tool that supports Behavior Driven Development (BDD), a software development practice that promotes collaboration. Cucumber

More information

Final Report: Faculty Progress Report System Team Deadpool

Final Report: Faculty Progress Report System Team Deadpool Final Report: Faculty Progress Report System Team Deadpool Team Members and roles: - Adedoyin Aderibigbe ( Scrum Master) - aadedoyino@email.tamu.edu - Kelly Luk Bounsawat (Product Owner) - kelly_12azn@tamu.edu

More information

Lecture 8. Validations & Sessions 1 / 41

Lecture 8. Validations & Sessions 1 / 41 Lecture 8 Validations & Sessions 1 / 41 Advanced Active Record 2 / 41 More Complex Queries Arel provides us with a number of methods to query our database tables So far, we've only used find which limits

More information

What's new in Rails 4. Lucas Caton

What's new in Rails 4. Lucas Caton What's new in Rails 4 Lucas Caton www.lucascaton.com.br 4 June 25, 2013 Rails 4.0: Final version released! Ruby 1.8.7 Ruby 1.9.2 Ruby 1.9.3 Ruby 2.0.0 RubyGems 2.x ThreadSafety memcache-client dalli =>

More information

Pulkit Agarwal. AppBrowzer( Nov 2015 April 2016

Pulkit Agarwal. AppBrowzer(  Nov 2015 April 2016 Pulkit Agarwal #75, 3 Floor 16th Main, 17th E Cross Madeena Nagar 2nd Stage BTM, Bangalore-560076 E-mail: pulkit.ag02@gmail.com Website: http://www.pulkitagarwal.tech Phone: +91-8050734462 OBJECTIVE To

More information

Merging. Merb into Rails

Merging. Merb into Rails Merging Merb into Rails Me Yehuda Katz @carlhuda Cloud 12/23 2008 So how'd we do? "Rails will become more modular, starting with a rails-core, and including the ability to opt in or out of specific

More information

Instructions for the Day of Ruby Ruby on Rails Tutorial

Instructions for the Day of Ruby Ruby on Rails Tutorial Instructions for the Day of Ruby Ruby on Rails Tutorial 1. Make sure you have the vendor files from http://www.cornetdesign.com/files/dor.zip. 2. Open a terminal window and change to a project directory.

More information

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs Welcome 1 And the Greatest of These Is... Rack Support Ben Scofield Viget Labs 2 #?forben 3 4 Application Templates 5 Nested Attribute Assignment flickr: angelrays 6 ActiveRecord::Base#touch flickr: jjjohn

More information

Contributing to Insoshi with Git and GitHub. Michael Hartl

Contributing to Insoshi with Git and GitHub. Michael Hartl Contributing to Insoshi with Git and GitHub Michael Hartl + Winter 08 + Winter 08 + = Winter 08 Open-source social networking platform dogfood.insoshi.com #1 #1 #2 Common Contacts class Person

More information

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60 Web Technologies VU (706.704) Vedran Sabol ISDS, TU Graz Nov 13, 2017 Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, 2017 1 / 60 Outline 1 Separation of Concerns Design Principle 2 Model-View-Controller

More information

Ruby on Rails. Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06

Ruby on Rails. Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06 Ruby on Rails Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06 Smalltalk Robert Tinney www.tinney.net + Lisp Conrad Barski www.lisperati.com + Perl O Reilly www.perl.com Without

More information

TicketCloud. Senior Project. Ross McKelvie Gene Fisher Monday, September 16, 2013

TicketCloud. Senior Project. Ross McKelvie Gene Fisher Monday, September 16, 2013 TicketCloud Senior Project Ross McKelvie Gene Fisher Monday, September 16, 2013 TicketCloud is a digital ticket service that offers advantages to both event hosts/vendors and consumers. Using QR Codes,

More information

This tutorial will show you, how to use RSpec to test your code when building applications with Ruby.

This tutorial will show you, how to use RSpec to test your code when building applications with Ruby. About the Tutorial RSpec is a unit test framework for the Ruby programming language. RSpec is different than traditional xunit frameworks like JUnit because RSpec is a Behavior driven development tool.

More information

Ruby: Introduction, Basics

Ruby: Introduction, Basics Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie

More information

appendix B: Working with Ruby on Rails

appendix B: Working with Ruby on Rails B1 appix B: Working with Ruby on Rails APPENDIX B B2 Since the beginning of the Web, both static and dynamic typed languages have been used for writing web applications. Java and its cousin C# have emerged

More information

Agile Web Development with Rails 5

Agile Web Development with Rails 5 Extracted from: Agile Web Development with Rails 5 This PDF file contains pages extracted from Agile Web Development with Rails 5, published by the Pragmatic Bookshelf. For more information or to purchase

More information

The Ruby Programming Language: Everything You Need To Know By Yukihiro Matsumoto, David Flanagan

The Ruby Programming Language: Everything You Need To Know By Yukihiro Matsumoto, David Flanagan The Ruby Programming Language: Everything You Need To Know By Yukihiro Matsumoto, David Flanagan 6 answers: What should every programmer know about Ruby - Quora - A Ruby newbie can begin learning the language

More information

Building a Rails Application

Building a Rails Application Building a Rails Application Let s get started! Use MySQL to create a depot_development database Create a new Ruby on Rails project called depot Make sure root password is included in Configuration/database.yml

More information

Rake Tasks. David Grayson Las Vegas Ruby Meetup

Rake Tasks. David Grayson Las Vegas Ruby Meetup Rake Tasks David Grayson Las Vegas Ruby Meetup 2013-08-14 Two main types of Rails commands: rails rails new rails server rails console rails generate rake rake db:migrate rake spec rake routes rake middleware

More information

Session 5 Software Development with Ruby on Rails

Session 5 Software Development with Ruby on Rails Quintessential School Systems Session 5 Software Development with Ruby on Rails Presented by Mark Bixby Jeff Vance Copyright Quintessential School Systems, 2009 All Rights Reserved 867 American Street

More information

Improving Coverage Analysis

Improving Coverage Analysis Improving Coverage Analysis 1 Ryan Davis Coding professionally 25 years, 16 years Ruby Founder, Seattle.rb; First & Oldest Ruby Brigade Author: minitest, flog, flay, debride, ruby_parser, etc. ~114 million

More information

Advanced RESTful Rails. Ben Scofield

Advanced RESTful Rails. Ben Scofield Advanced RESTful Rails Ben Scofield Constraints Shall I compare thee to a summer's day? Thou art more lovely and more temperate. Rough winds do shake the darling buds of May, And summer's lease hath all

More information