Upload
bincangteknologi
View
447
Download
4
Embed Size (px)
Citation preview
Tentang RubyA dynamic, open source programming language witha 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 1995Object OrientedSekarang versi 2.2.1https://github.com/ruby/ruby
Why Ruby"Ruby stays out of your way" (Dave Thomas)“trying to make Ruby natural, not simple” (Matz)Imperative with functional flavor (+OO)VersatileGreat communities ( )RubyGems
Ruby is VersatileScriptingServer side web (Rails, Sinatra, etc.)Client side web (Opal, Volt)Mobile (Ruby Motion)Robotics (Artoo)JVM based app (JRuby)
Ruby.newdef greeting(name);
result = "Hello, " + name;
return result;
end;
puts(greeting("Delta"));
puts(greeting("Puti"));
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
Object.. Object.. Everywhereputs "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
Monkey Patch Everythingclass String
def shout!
"#{self.upcase}!!!"
end
end
puts "Tech Talk JDV".shout!
Can doesn't mean you shouldclass Animal; def walk; "Walking..."; end; end;
class Cat < Animal
def speak
"Meong..."
end
end
puts "#{Cat.new.speak} while #{Cat.new.walk}"
Arraysmy_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}"
Hashesperson = {
'name' => 'Delta Purna Widyangga',
'age' => '28',
'job' => 'Programmer'
}
p person['name']
p person['job']
p person['weight']
Blocks (1)def my_block
puts "Begin"
yield
yield
puts "End"
end
my_block { puts "Inside my block" }
Blocks (2)def our_programmers
yield "Hiraq", "Backend"
yield "Fikri", "Frontend"
end
our_programmers do |name, role|
puts "#{name} is a #{role} developer"
end
Iterators[ 'angga', 'oki', 'omayib' ].each {|name| print name, " " }
3.times { print "*" }
2.upto(8) {|i| print i }
('b'..'f').each {|char| print char }
puts
Collectionsp [ 1, 2, 3 ].map { |n| n * 2 }
p (1..10).select { |n| n % 2 == 0 }
p [ 10, 20, 30 ].reduce { |sum, n| sum + n }
Ruby for DSLRuby 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'
Tentang SinatraSinatra is a DSL for quickly creating web applications
in Ruby with minimal effort - sinatrarb.com
Dibuat oleh @bmizerany (Blake Mizerany) tahun 2007Sekarang di maintain oleh @rkh (Konstantin Haase)
Why SinatraThey are both solving a different set of issues, even
though they indeed overlap. While Rails is aframework focused on writing model driven webapplications, Sinatra is a library for dealing withHTTP from the server side. If you think in terms of
HTTP requests/responses, Sinatra is the ideal tool. Ifyou 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. Aslong as you stay micro, Sinatra will beat Rails. If you
go beyond micro, Rails will beat Sinatra. - David
Installing SinatraSinatra adalah sebuah gem (library di ruby)
gem install sinatrahttps://rubygems.org/gems/sinatra
Hello Sinatrarequire 'sinatra'
get '/' do
'Hello Sinatra!'
end
Resources
Komunitas
Untuk Belajar
jogja.rbid-techid-rubyBelajar Ruby on Rails @qiscusRoR Semarang
Try RubyBelajar Ruby Bahasa IndonesiaCodecademy RubyLearn Ruby the Hard WayThe Pickaxe BookSinatra READMESinatra Book