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

Introduction to Ruby and Sinatra

Introduction to Ruby and Sinatra

This decks is presented on a Tech Talk (bincangteknologi.com) at Jogja Digital Valley on 25th March 2015.

It covers topics of ruby basics as well as short introduction to the ruby micro framework Sinatra.

The accompanying code can be found in https://github.com/deltapurna/intro_to_ruby_and_sinatra

Delta Purna Widyangga

March 25, 2015
Tweet

More Decks by Delta Purna Widyangga

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. Ruby is Versatile Scripting Server side web (Rails, Sinatra, etc.)

    Client side web (Opal, Volt) Mobile (Ruby Motion) Robotics (Artoo) JVM based app (JRuby)
  4. Ruby.new def greeting(name); result = "Hello, " + name; return

    result; end; puts(greeting("Delta")); puts(greeting("Puti"));
  5. 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
  6. 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
  7. 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}"
  8. 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}"
  9. Hashes person = { 'name' => 'Delta Purna Widyangga', 'age'

    => '28', 'job' => 'Programmer' } p person['name'] p person['job'] p person['weight']
  10. Blocks (1) def my_block puts "Begin" yield yield puts "End"

    end my_block { puts "Inside my block" }
  11. Blocks (2) def our_programmers yield "Hiraq", "Backend" yield "Fikri", "Frontend"

    end our_programmers do |name, role| puts "#{name} is a #{role} developer" end
  12. Iterators [ 'angga', 'oki', 'omayib' ].each {|name| print name, "

    " } 3.times { print "*" } 2.upto(8) {|i| print i } ('b'..'f').each {|char| print char } puts
  13. 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 }
  14. 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'
  15. 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)
  16. 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
  17. Installing Sinatra Sinatra adalah sebuah gem (library di ruby) gem

    install sinatra https://rubygems.org/gems/sinatra
  18. 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