Rspec Essentials Develop Testable, Modular, An

Total Page:16

File Type:pdf, Size:1020Kb

Rspec Essentials Develop Testable, Modular, An RSpec Essentials Develop testable, modular, and maintainable Ruby software for the real world using RSpec Mani Tadayon BIRMINGHAM - MUMBAI RSpec Essentials Copyright © 2016 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: April 2016 Production reference: 1130416 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78439-590-2 www.packtpub.com Credits Author Project Coordinator Mani Tadayon Judie Jose Reviewers Proofreader Stefan Daschek Safis Editing Nola Stowe Indexer Commissioning Editor Rekha Nair Amarabha Banerjee Graphics Acquisition Editor Abhinash Sahu Reshma Raman Production Coordinator Content Development Editor Manu Joseph Rashmi Suvarna Cover Work Technical Editor Manu Joseph Anushree Arun Tendulkar Copy Editor Safis Editing About the Author Mani Tadayon first learned to program as a shy 7th grader on an Apple IIe using BASIC. He went on to learn Pascal, C++, Java, JavaScript, Visual Basic, and PHP before becoming a Ruby developer in 2008. With 15 years of experience in the software industry, he has developed expertise in web development, infrastructure, and testing. Mani's interests and education are broad, with degrees in foreign languages, computer science, and geography. He lives just far enough from Silicon Valley with his family and their many, many Shiba Inus. About the Reviewers Stefan Daschek started hacking on computers back in the days of the Commodore 64/128. Since then, he has studied computer sciences at TU Vienna and founded his own company, Büro DIE ANTWORT. Currently, he is mainly developing and maintaining complex web applications written in Ruby on Rails, and sometimes soldering stuff and building small robots. His original Commodore 128 is still working and used for a collective session of Summer Games every so often. Nola Stowe has been programming with Ruby since Rails 0.8 and testing with RSpec since its early days. She is an independent consultant, helping to augment teams of Ruby and Clojure developers. She has also been a technical reviewer for Instant RSpec Test-Driven Development, Packt Publishing and The Rails Way, First Edition. Nola blogs at http://blog.rubygeek.com and http://www.clojuregeek.com. Thanks to my husband Nick for doing the mundane things in life to allow me time do what I love doing. You are the greatest! www.PacktPub.com eBooks, discount offers, and more Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks. TM https://www2.packtpub.com/books/subscription/packtlib Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books. Why subscribe? • Fully searchable across every book published by Packt • Copy and paste, print, and bookmark content • On demand and accessible via a web browser Table of Contents Preface v Chapter 1: Exploring Testability from Unit Tests to Behavior-Driven Development 1 The promise of testing 1 Testability 3 Technical assumptions 4 Running our first spec 5 Understanding the unit test 9 Writing specs with RSpec 12 Test-driven development 14 Behavior-driven development 15 Summary 16 Chapter 2: Specifying Behavior with Examples and Matchers 17 Structure of a spec file 17 Using let and context 20 Matchers 23 Built-in matchers 23 Custom matchers 24 Enhanced context in matcher output 26 Creating a good custom error message 29 Improving application code 31 Testing for errors 35 Summary 40 [ i ] Table of Contents Chapter 3: Taking Control of State with Doubles and Hooks 41 Why mock? 41 Mocks, stubs, and doubles 45 Using hooks 46 Controlling when hooks are executed 52 Advanced state control with hooks and mocks 53 Summary 58 Chapter 4: Setting Up and Cleaning Up 59 Configuring RSpec with spec_helper.rb 59 Initialization and configuration of resources 62 A case study of test simplicity with an external service 63 A case study of production faithfulness with a test resource instance 76 Summary 83 Chapter 5: Simulating External Services 85 The importance of external web services 85 Mock HTTP responses with custom helpers 86 Using real-world requests for mock responses 87 Using WebMock for mock HTTP requests 93 Using VCR for mock requests 94 Summary 98 Chapter 6: Driving a Web Browser with Capybara 99 Getting started with Capybara and Selenium 100 Integrating Capybara with RSpec 103 Why Capybara? 106 Black-box JavaScript tests with a real browser 107 Summary 108 Chapter 7: Building an App from the Outside In with Behavior-Driven Development 109 Exploring BDD 110 MMFs by example 111 Using TodoMVC 113 Specifying the MMF 114 Configuring RSpec to run a feature file 116 The BDD process begins 119 Building web apps with Rack 120 Serving static files using Rack middleware 123 Summary 125 [ ii ] Table of Contents Chapter 8: Tackling the Challenges of End-to-end Testing 127 Step 1 – building the view 127 Step 2 – defining the API 133 Step 3 – finishing the view 157 The pros and cons of BDD 160 Simple Rack authentication middleware 161 JSON Web Token 164 Summary 166 Chapter 9: Configurability 167 Configuration and testability 168 What is so important about configuration? 168 What does all this have to do with testing? 169 File-based configuration management 169 A better configuration manager 173 Summary 184 Chapter 10: Odds and Ends 185 Reducing duplication with shared example groups 185 Mocking time 193 Detecting false negatives and false positives 196 Testing mixins with dummy containers 200 Summary 202 Index 203 [ iii ] Preface RSpec is one of the reasons why the Ruby programming language has become so popular. There is a strong emphasis on testing, documentation, and iterative development in the Ruby community. With RSpec, it is easy to create excellent tests that specify behavior and improve the development process. In this book, we'll learn how to use RSpec in a real-world setting. We'll also learn about the concept of testability, which relates to our application code as well as to our tests. Throughout, we'll focus on writing tests that are valuable and stay away from testing for its own sake. RSpec offers a variety of tools for creating test scenarios, assertions, and error messages. We can create the tests we need and get the exact output we want using RSpec without having to do too much work. RSpec has been under development for almost 10 years, so it has evolved significantly. Many ways of writing tests have developed due to the flexibility of RSpec and the underlying Ruby language. Some of these are clever but some others are too clever. We'll learn about a solid subset of RSpec's features that are reliable and avoid some of the trickier features. Today, professional software development must include automated testing. However, testing presents many challenges in the real world. There is a danger of learning about testing tools without knowing how to use them effectively. In this book, we will always keep an eye on the real world, even in our simple examples. We'll cover a range of application types, from libraries to rich web UIs, and a range of approaches to testing, from unit tests to behavior-driven development. Along the way, we'll discuss potential pitfalls and develop production-grade solutions to avoid them. As you progress through this book, you will learn about many RSpec features, my recommended approach to using them, and their relation to testability. I hope that you can use this book both as a handbook for simple tasks and as a guide to developing a sophisticated understanding of automated software testing. [ v ] Preface What this book covers Chapter 1, Exploring Testability from Unit Tests to Behavior-Driven Development, defines the basic concepts of unit, test, and testability, and puts them in context. Chapter 2, Specifying Behavior with Examples and Matchers, shows how RSpec's basic features implement units and assertions. Chapter 3, Taking Control of State with Doubles and Hooks, discusses how RSpec implements mocks and hooks to allow us to set up a test scenario. Chapter 4, Setting Up and Cleaning Up, delves further into how we can simulate external resources such as databases and web servers while keeping our test environment clean using RSpec support code. Chapter 5, Simulating External Services, extends our discussion of handling external web services by using the VCR gem. Chapter 6, Driving a Web Browser with Capybara, introduces the Capybara library, and shows how to use it to test rich web UIs.
Recommended publications
  • Puppet Dashboard 1.2 Manual
    Puppet Dashboard Manual (Generated on July 01, 2013, from git revision 46784ac1656bd7b57fcfb51d0865ec7ff65533d9) Puppet Dashboard 1.2 Manual This is the manual for Puppet Dashboard 1.2. Overview Puppet Dashboard is a web interface for Puppet. It can view and analyze Puppet reports, assign Puppet classes and parameters to nodes, and view inventory data and backed-up file contents. Chapters Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Installing Puppet Dashboard This is a chapter of the Puppet Dashboard 1.2 manual. NAVIGATION Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Overview Puppet Dashboard is a Ruby on Rails web app that interfaces with Puppet. It will run on most modern Unix-like OSes (including Mac OS X and most Linux distributions), requires a certain amount of supporting infrastructure, and can be deployed and served in a variety of ways. Dashboardʼs web interface supports the following browsers: Chrome (current versions) Firefox 3.5 and higher Puppet Dashboard Manual • Puppet Dashboard 1.2 Manual 2/27 Safari 4 and higher Internet Explorer 8 and higher Installing, in Summary In outline, the steps to get Dashboard running are: Installing the external dependencies Installing the Dashboard code Configuring Dashboard Creating and configuring a MySQL database Testing that Dashboard is working Configuring Puppet Starting the delayed job worker processes Running Dashboard in a production-quality server After completing these tasks, Dashboardʼs main functionality will be on-line and working smoothly. You can then configure Dashboard further and enable optional features If you are trying to upgrade Puppet Dashboard instead of installing it from scratch, see the chapter of this manual on upgrading instead of reading further in this chapter.
    [Show full text]
  • Interfacing Apache HTTP Server 2.4 with External Applications
    Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick November 6, 2012 Who am I? Interfacing Apache HTTP Server 2.4 with External Applications Met Unix (in the form of Xenix) in 1985 Jeff Trawick Joined IBM in 1990 to work on network software for mainframes Moved to a different organization in 2000 to work on Apache httpd Later spent about 4 years at Sun/Oracle Got tired of being tired of being an employee of too-huge corporation so formed my own too-small company Currently working part-time, coding on other projects, and taking classes Overview Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Huge problem space, so simplify Perspective: \General purpose" web servers, not minimal application containers which implement HTTP \Applications:" Code that runs dynamically on the server during request processing to process input and generate output Possible web server interactions Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Native code plugin modules (uhh, assuming server is native code) Non-native code + language interpreter inside server (Lua, Perl, etc.) Arbitrary processes on the other side of a standard wire protocol like HTTP (proxy), CGI, FastCGI, etc. (Java and \all of the above") or private protocol Some hybrid such as mod fcgid mod fcgid as example hybrid Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Supports applications which implement a standard wire protocol, no restriction on implementation mechanism Has extensive support for managing the application[+interpreter] processes so that the management of the application processes is well-integrated with the web server Contrast with mod proxy fcgi (pure FastCGI, no process management) or mod php (no processes/threads other than those of web server).
    [Show full text]
  • Questions for Mongrel
    www.YoYoBrain.com - Accelerators for Memory and Learning Questions for Mongrel Category: Introduction - (16 questions) Mongrel is described in what way in the "A web application container for Ruby on Mongrel pdf available from O Reilly Rails" Mongrel is compared with what web servers production performance: Fast CGI or SCGI in the Rails world in terms of production performance and development Development: WEBrick simplicity/speed Creator of Mongrel Zed A Shawwww.zedshaw.com Mongrel is developed on what mixture of Ruby and C programming/scripting languages Documentation for Mongrel mongrel.rubyforge.org/docs/index.html The creators of Mongrel describe it how? a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. It is framework agnostic Three key technologies that are used for A custom HTTP 1.1 parser (based on RFC Mongrel's internals standard, written using Ragel in C and Java as a Rby extension) Simple server that uses the parser and URIClassifier to process requests, find the right handlers, then pass the results to the handler for processing Handlers are responsible for using HttpRequet and HttpResponse objects to "do their thing and then return results" Component of Mongrel responsible for Handlers dealing with HttpRequest and HttpResponse How does Mongrel support threading one thread per request, but it will start closing connections when it gets "overloaded"while Mongrel is processing HTTP requests and sending responses it uses Ruby's threading system What platforms that already work with Camping and Og+Nitro Mongrel are throught to be "thread-safe" Have not been heavily tested Is Ruby on Rails thread safe? no How does Mongrel handle Rails" " Ruby on Rails is not thread safe so there is a synchronized block around the calls to Dispatcher.dispatch.
    [Show full text]
  • Ruby on Rails Matt Dees All Trademarks Used Herein Are the Sole Property of Their Respective Owners
    Ruby on Rails Matt Dees All trademarks used herein are the sole property of their respective owners. Introduction How Ruby on Rails Works cPanel's interaction with Ruby on Rails Administrating Ruby on Rails Troubleshooting Ruby on Rails What is Ruby on Rails? A Web Application Framework aimed towards the rapid development and deployment of Dynamic Web 2.0 Applications Interpreted Programming Language Web Applications are done through either Rails or as a straight CGI application Every part of the Ruby on Rails system is dependent on ruby working correctly Gems Gems are Ruby modules Either compiled or interpreted Ruby code Gems can be full applications or libraries for Ruby programs Managed by the “gem” command Rails Rails is a framework for creating Ruby applications and provides several different pieces of functionality Rails exists for multiple programming languages Is a gem Consists of several gems used for handling different functions Different versions of this exist, each application requires a specific version Rails Continued Action Record – Rapid development library for building daemon independent database queries Action Pack – An implementation of Model View Controller for Ruby. Action Mailer – An Email Handler Webserver – Usually webrick, however we use mongrel Mongrel Mongrel is the Web Server used for serving Ruby on Rails applications One instance per Ruby application Other daemons exist, but mongrel has the best security and performance record Is a gem Runs applications on port 12001 and up on cPanel Uses a significant amount
    [Show full text]
  • Enterprise Integration with Ruby a Pragmatic Guide
    Enterprise Integration with Ruby A Pragmatic Guide Maik Schmidt The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas P r a g m a t i c B o o k s h e l f Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://www.pragmaticprogrammer.com Copyright © 2006 The Pragmatic Programmers LLC. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmit- ted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Printed in the United States of America. ISBN 0-9766940-6-9 Printed on acid-free paper with 85% recycled, 30% post-consumer content. First printing, March 2006 Version: 2006-5-4 Für meine Eltern.
    [Show full text]
  • Ruby on Rails™ Tutorial: Learn Web Developments with Rails
    ptg8286261 www.it-ebooks.info Praise for Michael Hartl’s Books and Videos on Ruby on RailsTM ‘‘My former company (CD Baby) was one of the first to loudly switch to Ruby on ptg8286261 Rails, and then even more loudly switch back to PHP (Google me to read about the drama). This book by Michael Hartl came so highly recommended that I had to try it, and the Ruby on RailsTM Tutorial is what I used to switch back to Rails again.’’ —From the Foreword by Derek Sivers (sivers.org) Formerly: Founder, CD Baby Currently: Founder, Thoughts Ltd. ‘‘Michael Hartl’s Rails Tutorial book is the #1 (and only, in my opinion) place to start when it comes to books about learning Rails. It’s an amazing piece of work and, unusually, walks you through building a Rails app from start to finish with testing. If you want to read just one book and feel like a Rails master by the end of it, pick the Ruby on RailsTM Tutorial.’’ —Peter Cooper Editor, Ruby Inside www.it-ebooks.info ‘‘Grounded in the real world.’’ —I Programmer (www.i-programmer.info), by Ian Elliot ‘‘The book gives you the theory and practice, while the videos focus on showing you in person how its done. Highly recommended combo.’’ —Antonio Cangiano, Software Engineer, IBM ‘‘The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.’’ —Greg Charles, Senior Software Developer, Fairway Technologies ‘‘Overall, these video tutorials should be a great resource for anyone new to Rails.’’ —Michael Morin, ruby.about.com ‘‘Hands-down, I would recommend this book to anyone wanting to get into Ruby on Rails development.’’ —Michael Crump, Microsoft MVP ptg8286261 www.it-ebooks.info RUBY ON RAILSTM TUTORIAL Second Edition ptg8286261 www.it-ebooks.info Visit informit.com/ruby for a complete list of available products.
    [Show full text]
  • James Reynolds What Is a Ruby on Rails Why Is It So Cool Major Rails Features Web Framework
    Ruby On Rails James Reynolds What is a Ruby on Rails Why is it so cool Major Rails features Web framework Code and tools for web development A webapp skeleton Developers plug in their unique code Platforms Windows Mac OS X Linux Installation Mac OS X 10.5 will include Rails Mac OS X 10.4 includes Ruby Most people reinstall it anyway From scratch Drag and drop Locomotive Databases Mysql Oracle SQLite Firebird PostgreSQL SQL Server DB2 more Webservers Apache w/ FastCGI or Mongrel LightTPD WEBrick "IDE's" TextMate and Terminal (preferred) RadRails jEdit Komodo Arachno Ruby Has "inspired" Grails CakePHP Trails PHP on TRAX Sails MonoRail Catalyst TrimPath Junction Pylons WASP ColdFusion on Wheels And perhaps more... Why is it so cool? Using the right tool for the job y = x^2 vs y = x^0.5 Right tool Rails is the most well thought-out web development framework I've ever used. And that's in a decade of doing web applications for a living. I've built my own frameworks, helped develop the Servlet API, and have created more than a few web servers from scratch. Nobody has done it like this before. James Duncan Davidson, Creator of Tomcat and Ant y = x ^ 2 vs y = x ^ 0.5 Features Features Work Work Typical Rare y = x ^ 2 vs y = x ^ 0.5 Feature ceiling Features Features Work Work This is a no-brainer... Ruby on Rails is a breakthrough in lowering the barriers of entry to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in a matter of days.
    [Show full text]
  • Osvのご紹介 in Iijlab セミナー
    OSvのご紹介 in iijlab セミナー Takuya ASADA <syuu@cloudius-systems> Cloudius Systems 自己紹介 • Software Engineer at Cloudius Systems • FreeBSD developer (bhyve, network stack..) Cloudius Systemsについて • OSvの開発母体(フルタイムデベロッパで開発) • Office:Herzliya, Israel • CTO : Avi Kivity → Linux KVMのパパ • 他の開発者:元RedHat(KVM), Parallels(Virtuozzo, OpenVZ) etc.. • イスラエルの主な人物は元Qumranet(RedHatに買収) • 半数の開発者がイスラエル以外の国からリモート開発で参加 • 18名・9ヶ国(イスラエル在住は9名) OSvの概要 OSvとは? • OSvは単一のアプリケーションをハイパーバイザ・IaaSでLinuxOSな しに実行するための新しい仕組み • より効率よく高い性能で実行 • よりシンプルに管理しやすく • オープンソース(BSDライセンス)、コミュニティでの開発 • http://osv.io/ • https://github.com/cloudius-systems/osv 標準的なIaaSスタック • 単一のアプリケーションを実行するワークロードでは フルサイズのゲストOS+フル仮想化はオーバヘッド コンテナ技術 • 実行環境をシンプルにする事が可能 • パフォーマンスも高い ライブラリOS=OSv • コンテナと比較してisolationが高い 標準的なIaaSスタック: 機能の重複、オーバヘッド • ハイパーバイザ・OSの双方が ハードウェア抽象化、メモリ Your App 保護、リソース管理、セキュ リティ、Isolationなどの機能 Application Server を提供 JVM • OS・ランタイムの双方がメモ Operating System リ保護、セキュリティなどの 機能を提供 Hypervisor • 機能が重複しており無駄が多 Hardware い OSv: 重複部分の削除 • 重複していた多くの機能を排 Your App 除 Application Server • ハイパーバイザに従来のOSの JVM 役割を負ってもらい、OSvは Core その上でプロセスのように単 Hypervisor 一のアプリケーションを実行 Hardware OSvのコンセプト • 1アプリ=1インスタンス→シングルプロセス • メモリ保護や特権モードによるプロテクションは 行わない • 単一メモリ空間、単一モード(カーネルモード • Linux互換 libc APIを提供、バイナリ互換(一部) • REST APIによりネットワーク経由で制御 動作環境 • ハイパーバイザ • IaaS • KVM • Amazon EC2 • Xen • Google Compute • VMware Engine • VirtualBox 対応アーキテクチャ • x86_64(32bit非サポート) • aarch64 対応アプリ (Java) • JRuby(Ruby on Railsなど) • OpenJDK7,8 • Ringo.JS • Tomcat • Jython • Cassandra • Erjang • Jetty • Scala • Solr • Quercus(PHPエンジン、
    [Show full text]
  • Ruby on Railsâ—¢ Tutorial
    www.it-ebooks.info Praise for Michael Hartl’s Books and Videos on Ruby on RailsTM ‘‘My former company (CD Baby) was one of the first to loudly switch to Ruby on Rails, and then even more loudly switch back to PHP (Google me to read about the drama). This book by Michael Hartl came so highly recommended that I had to try it, and the Ruby on RailsTM Tutorial is what I used to switch back to Rails again.’’ —From the Foreword by Derek Sivers (sivers.org) Formerly: Founder, CD Baby Currently: Founder, Thoughts Ltd. ‘‘Michael Hartl’s Rails Tutorial book is the #1 (and only, in my opinion) place to start when it comes to books about learning Rails. ... It’s an amazing piece of work and, unusually, walks you through building a Rails app from start to finish with testing. If you want to read just one book and feel like a Rails master by the end of it, pick the Ruby on RailsTM Tutorial.’’ —Peter Cooper Editor, Ruby Inside www.it-ebooks.info ‘‘Grounded in the real world.’’ —I Programmer (www.i-programmer.info), by Ian Elliot ‘‘The book gives you the theory and practice, while the videos focus on showing you in person how its done. Highly recommended combo.’’ —Antonio Cangiano, Software Engineer, IBM ‘‘The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.’’ —Greg Charles, Senior Software Developer, Fairway Technologies ‘‘Overall, these video tutorials should be a great resource for anyone new to Rails.’’ —Michael Morin, ruby.about.com ‘‘Hands-down, I would recommend this book to anyone wanting to get into Ruby on Rails development.’’ —Michael Crump, Microsoft MVP www.it-ebooks.info RUBY ON RAILSTM TUTORIAL Second Edition www.it-ebooks.info Visit informit.com/ruby for a complete list of available products.
    [Show full text]
  • PDF Download
    Introduction to Web Applications Tobias Pfeiffer @PragTob pragtob.wordpress.com Today What is a web application? Not rocket science I am Rails (and So Can You!) Programming is fun! What you are going to build today So what is a web application? Presented in a web browser Runs on a server... ...or the cloud is dynamic A high level overview High level overview High level overview High level overview Request High level overview High level overview Answer High level overview Answer High level overview What parts does a web application consist of? Web Application Front End Back End Front End Back End CSS JavaScript HTML CSS JavaScript HTML Structure and content CSS JavaScript HTML Styling to transform... ...this... ...into this. CSS JavaScript HTML CSS JavaScript Back End HTML CSS JavaScript Back End HTML Logic Infrastructure Logic Infrastructure Logic ● Behaviour ● Implements the business logic ● Ties all the parts together ● Generates content Ruby on Rails But what is Ruby on Rails? A web application framework written in Ruby ● A general purpose programming language ● Principle of least surprise ● Invented by Yukihiro Matsumoto "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language." Yukihiro Matsumoto Ruby on Rails ● Framework written in Ruby ● set of functionality to help write web applications – Connecting to the database (ActiveRecord) – Generating HTML (ERB) – Pays attention to security – … and so much more! ● Model View Controller
    [Show full text]
  • Rails Connector for CMS Fiona Infopark CMS Fiona Rails Connector for CMS Fiona
    Infopark CMS Fiona Rails Connector for CMS Fiona Infopark CMS Fiona Rails Connector for CMS Fiona While every precaution has been taken in the preparation of all our technical documents, we make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. All trademarks and copyrights referred to in this document are the property of their respective owners. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without our prior consent. Contents 1 Concepts . 7 1.1 Moving to Rails? . 7 1.1.1 Editorial and Live System . 7 1.1.2 Editorial Content and Layout are Handled Equally . 7 1.1.3 The Classical Live System is heterogeneous . 8 1.1.4 Ruby on Rails is an Integrated Framework . 8 1.1.5 Moving to Ruby on Rails . 8 1.1.6 Frequently Asked Questions About Moving to Rails . 9 1.2 What Is Ruby on Rails? . 10 1.3 Functions of Infopark Rails Connector . 11 1.4 Usage Scenarios for the Rails Connector . 11 1.5 The Playland Demo Application . 12 1.6 The Layout of a Rails Application . 18 1.7 Deployment . 18 1.8 CMS Layouts as Extensible Page Types . 19 1.9 Dedicated Controllers for Specific CMS File Formats . 20 1.10 Using the Rails Application as a Preview Server .
    [Show full text]
  • Khalid Jawaid Shaikh 122 Lamport Blvd, Staten Island, New York Looking for Employment Nationally, Willing to Relocate Without Expenses
    Khalid Jawaid Shaikh 122 Lamport Blvd, Staten Island, New York Looking for employment nationally, willing to relocate without expenses. Contract Corp to Corp ONLY. 707 971 9466 [email protected] SUMMARY 11 years of professional programming and application development experience. 5 years Ruby on Rails& operations scaling experience. Programmed in C/C++ since 12 years old. Employed by 3 companies listed on DOWJONES. Build web sites with over 10 million users per day operating in 200+ countries. Looking for employment nationally, willing to relocate without expenses. Built several successful Web 2.0 consumer web sites with large user bases and revenue. COMPUTER SKILLS Languages& Tools y Proficient in: Ruby on Rails 3.0.7, Apache,Nginx, Varnish, AJAX, CSS, HTML, XML, Javascript, SVN,GIT, jQuery, YUI, DB Schema, DHTML, REST, ERB, YAML, Capistrano, Perl, Bash, Watir, Cron jobs, MySQL Replication, Puppet, Heroku, Passenger, RVM, Firebug, Selenium, i18N, NewRelic, Builder, FactoryGirl, Hpricot, Hoptoad, Memcached, Wordpress, Xtrabackup, Rspec, Nagios, Bugzilla, shell scripting, TCP/IP, HTTP, RAID 0/1/5/10, CDN, kernel, haproxy y Familiar with: PHP5, IIS, C#, ASP.NET, Android, iOS, iPhone, perl, bash Hosting y Rackspace Hosting (46 servers), Engine Yard Hosting (14 slices), EC2 Hosting (10 slices), Rackspace Cloud (10 slices), LeaseWeb (100 servers & 9gbps of bandwidth), Equinix & Multihomed bandwidth (200 servers& 4gbps of bandwidth), Amazon S3 (200GB of data) y HTTP Load Balancers, Firewalls, BGP routers, SMTP reputation management, SPAM, Scalable Architectures, DNS management, Deployment strategy, NFS, NAS Software y Database: MySQL 5.x, Oracle 10 and Sqlite3 y Platforms: Ubuntu 11.04, RedHat Enterprise Linux 5.4, Kylin 2.1, FreeBSD 8.2RC Scalability y Deep experience with scalability of top web sites in the world.
    [Show full text]