Introduction to Ruby Introduction 1. 2. 3. 4. 5. Ruby Basics Ruby for the Web Ruby on Rails Demo Questions What is Ruby? • Invented in mid-1990s by Yukihiro “Matz” Matsumoto • Interpreted Language • Completely Object Oriented • Built to be FUN! (Play with it at http://repl.it/languages/Ruby) Variables & Strings • Local variables don’t require definition. • Anything in a string surrounded by #{} allows for what’s in the brackets to be evaluated before being added to the string. This is string interpolation. Conditionals and comparisons Arrays • Arrays are objects like everything else. • All their functions can be seen online. Hash • Like ‘associative arrays’ for PHP. Stores a value with a key. Loops • For loops aren’t commonly used. #each and #times provides a more readable alternative • The variable in the pipes is the current value it’s using. This is block syntax – you’ll see it more. Iteration • This is how most iteration is done. #each will run what’s between do/end as many times as there are elements, setting the variable in the brackets to the current element. Object Oriented • EVERYTHING in Ruby is an object. (even classes) • All classes are open to redefinition – even core! Defining a New Class • All class names must be CamelCased. Extendibility • Ruby’s greatest strength is extendibility. • There are “gems” (plugins) available for anything you could think of needing. • Install the gem, require it in your code, and you get all its functionality! • 69,880 gems made since July 2009. (http://rubygems.org) Ruby on the Web • Ruby was just a scripting language. • Programmers wrote frameworks to write Ruby for the web (because it’s fun!) • Popular frameworks include Ruby on Rails and Sinatra. Ruby on Rails • Framework written by David Heinemeier Hansson and released in 2004. • Open source project (http://github.com/rails/rails) • Written to very rapidly create database backed applications. • Very opinionated – but these opinions have been built by fantastic engineers. Making a Rails Application Run the below commands in a terminal when Ruby is installed. 1. gem install rails 2. rails new blog 3. cd blog 4. rails server (a server is built into Rails for development) 5. Visit http://localhost:3000 6. Voila – a web server running on ruby! Rails – (M)odel-(V)iew-(C)ontroller • Rails is an MVC framework – meaning it separates application logic into three parts, the Model, the View, and the Controller Rails – Models • Models are object representations of items stored in the database. • There is usually one per “thing” – a table is a model, a chair is a model, etc. • Best practice is to store information here and do nothing else – there shouldn’t be a lot of logic in the model. Rails – Controllers • Controllers control the interaction between all aspects of the application and decides which view to show. • Demo – rails g controller welcome index • This creates a “welcome” controller with the index action. Rails - Routes • Routes decide which URL paths navigate to which controllers. • Root :to => “welcome#index” says that the root path goes to the welcome controller, index action. Rails - Views • Views contain the HTML that get rendered. • The index action of the welcome controller with render the HTML in app/views/welcome/index.html.erb. Rails - Scaffolding • Rapidly create the common Create/Read/Update/Modify views for a database item. • Rails generate scaffold Post title:string description:text • Rake db:migrate (This updates the database) Scaffolding – Part 2 • Scaffolding is usually frowned upon – it builds a lot of framework for actions you may not need. • However, for now, it creates a lot for little – feel free to play with it! Pros/Cons of Rails 1. Pros 1. Very fast development 2. Amazing toolsets – some of the best testing and debugging tools available to web developers. 2. Cons 1. Hardware. Ruby and Ruby on Rails make an important decision – developer time is worth more than the cost of hardware. Questions? Contact Me Get a hold of me if you’d like to talk! Email: trey.terrell@oregonstate.edu Github: terrellt Check out our source code: http://github.com/osulp