Slide 1

Slide 1 text

Ruby dan Sinatra By: Delta Purna Widyangga | @deltawidyangga [email protected]

Slide 2

Slide 2 text

Tentang Ruby A dynamic, open source programming language with a focus on simplicity and productivity. It has elegant syntax that is natural to read and easy to write - ruby-lang.org Dibuat oleh @matz (Yukihiro Matsumoto) Public release 1995 Object Oriented Sekarang versi 2.2.1 https://github.com/ruby/ruby

Slide 3

Slide 3 text

Why Ruby "Ruby stays out of your way" (Dave Thomas) “trying to make Ruby natural, not simple” (Matz) Imperative with functional flavor (+OO) Versatile Great communities ( ) RubyGems

Slide 4

Slide 4 text

Ruby is Versatile Scripting Server side web (Rails, Sinatra, etc.) Client side web (Opal, Volt) Mobile (Ruby Motion) Robotics (Artoo) JVM based app (JRuby)

Slide 5

Slide 5 text

Ruby.new def greeting(name); result = "Hello, " + name; return result; end; puts(greeting("Delta")); puts(greeting("Puti"));

Slide 6

Slide 6 text

Ruby.new (Refined) def greeting(name) "Hello, #{name}" end puts greeting("Delta") puts greeting("Puti") No semicolon | return the last expression | optional parentheses | String interpolation

Slide 7

Slide 7 text

Object.. Object.. Everywhere puts "Tech Talk JDV".length puts "Qiscus".index("c") puts "Delta Purna".reverse puts 42.even? puts nil.to_i String, FixNum, Everything on ruby land, even nothing is an object

Slide 8

Slide 8 text

Monkey Patch Everything class String def shout! "#{self.upcase}!!!" end end puts "Tech Talk JDV".shout!

Slide 9

Slide 9 text

Can doesn't mean you should class Animal; def walk; "Walking..."; end; end; class Cat < Animal def speak "Meong..." end end puts "#{Cat.new.speak} while #{Cat.new.walk}"

Slide 10

Slide 10 text

Arrays my_arr = [ 10, 'qiscus', 1.618 ] puts "The second element is #{my_arr[1]}" # set the third element my_arr[2] = nil puts "The array is now #{my_arr}"

Slide 11

Slide 11 text

Hashes person = { 'name' => 'Delta Purna Widyangga', 'age' => '28', 'job' => 'Programmer' } p person['name'] p person['job'] p person['weight']

Slide 12

Slide 12 text

Blocks (1) def my_block puts "Begin" yield yield puts "End" end my_block { puts "Inside my block" }

Slide 13

Slide 13 text

Blocks (2) def our_programmers yield "Hiraq", "Backend" yield "Fikri", "Frontend" end our_programmers do |name, role| puts "#{name} is a #{role} developer" end

Slide 14

Slide 14 text

Iterators [ 'angga', 'oki', 'omayib' ].each {|name| print name, " " } 3.times { print "*" } 2.upto(8) {|i| print i } ('b'..'f').each {|char| print char } puts

Slide 15

Slide 15 text

Collections p [ 1, 2, 3 ].map { |n| n * 2 } p (1..10).select { |n| n % 2 == 0 } p [ 10, 20, 30 ].reduce { |sum, n| sum + n }

Slide 16

Slide 16 text

Ruby for DSL Ruby is good for creating internal Domain Specific Language (DSL) tweet_as('deltawidyangga') do text 'hello world this is my first tweet' mention 'putiayusetiani' link 'http://melangkahkesurga.com' hashtag 'first' end tweet_as('deltawidyangga') do mention 'putiayusetiani'

Slide 17

Slide 17 text

Tentang Sinatra Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort - sinatrarb.com Dibuat oleh @bmizerany (Blake Mizerany) tahun 2007 Sekarang di maintain oleh @rkh (Konstantin Haase)

Slide 18

Slide 18 text

Why Sinatra They are both solving a different set of issues, even though they indeed overlap. While Rails is a framework focused on writing model driven web applications, Sinatra is a library for dealing with HTTP from the server side. If you think in terms of HTTP requests/responses, Sinatra is the ideal tool. If you need full integration and as much boilerplate as possible, Rails is the way to go. - Konstantin Sinatra is great for the micro-style, Rails is not. As long as you stay micro, Sinatra will beat Rails. If you go beyond micro, Rails will beat Sinatra. - David

Slide 19

Slide 19 text

Installing Sinatra Sinatra adalah sebuah gem (library di ruby) gem install sinatra https://rubygems.org/gems/sinatra

Slide 20

Slide 20 text

Hello Sinatra require 'sinatra' get '/' do 'Hello Sinatra!' end

Slide 21

Slide 21 text

Resources Komunitas Untuk Belajar jogja.rb id-tech id-ruby Belajar Ruby on Rails @qiscus RoR Semarang Try Ruby Belajar Ruby Bahasa Indonesia Codecademy Ruby Learn Ruby the Hard Way The Pickaxe Book Sinatra README Sinatra Book