$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
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
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
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
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
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