Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What about Ruby on Rails?... from a PHP Guy

What about Ruby on Rails?... from a PHP Guy

Presented at Ruby Conf Malaysia

Michael Cheng

October 13, 2017
Tweet

More Decks by Michael Cheng

Other Decks in Programming

Transcript

  1. Differences • PHP • Web centric • Not quite a

    language - collection of functions • Improved with PHP 7 • Ruby • General purpose (more effort to make web) • An expressive programming language 13
  2. Syntax Compared 14 “A string” “Hello, $name” 42 3.146 $variable

    $obj->variable Klass::$static_var SOME_CONSTANT Klass::SOME_CONST “A string” “Hello #{name}” 42 3.146 local_variable $global_var Klass.class_var SOME_CONSTANT Klass::SOME_CONST
  3. Syntax Compared 15 array(10, 20, 30) array(1, 2, 3, 4,

    5) array( “a” => “Apple”, “b” => “Banana” ) [10, 20, 30] [1..5] { a: “Apple”, b: “Banana” }
  4. Syntax Compared 16 if($morning == true){ echo “Hullo” } if

    ($morning) echo “Hullo” if morning? puts “Hullo” end puts “Hullo” if morning?
  5. Syntax Compared 17 class Tea extends Beverages{ private $water private

    $milk public function __construct(){ $this->water = true; $this->milk = true; } public function is_good(){ return true; } private function secret(){ return “hello”; } } class Tea < Beverages def initialize @water = true @milk = true end def good? true end private def secret “hello” end end
  6. Where Ruby Wins! • No semi-colons needed at end of

    statements • Dot is not used for concatenation • Calling methods on objects with 1 less character • @user.name and not $user->name • Curly braces are not necessary • What opening tags? <?php 18
  7. What I like about Ruby? • Tooling support • Testing,

    profiling and debugging are not an after-thought • Dependency management is easy • Easily switch between Ruby versions • Open source community / ecosystem • Problems solved by smart people 19
  8. What I like about Rails? • No need to depend

    on separate web server for development (build-in web server) • Command Line Interface (CLI) support and tools • rails new <project_name> • Track DB schema changes (relatively) easily • "There's a Gem for that”™ 21
  9. What I like about Rails? • MVP friendly • Commonly

    used stuff are already build - just add the Gem, configure and go! • From idea to product in short time - and its relatively secure and beta tester ready • Many deployment options • PaaS - Heroku, Azure • Self host via VPS, shared hosting 22
  10. Downside • BYO web server (for static content) • Quite

    memory intensive • Mostly solvable by throwing machines at the problem. (i.e. more money) 27
  11. Reflections • These are merely tools for building great web

    apps • Figure out the best tool for the job • Test, Build, Validate, Iterate • Knowledge in design patterns is important in understanding how we build apps better • Can still write 7000 line spaghetti Ruby files 28
  12. Where to start? • TryRuby - http://tryruby.org • RailsGirls Guide

    - http://guides.railsgirls.com • Ruby On Rails Tutorial - https://www.railstutorial.org • RailsCast - http://railscasts.com (outdated, but good starting point) • Ruby Meetup - https://www.meetup.com/ruby-malaysia/ 29