Skip to content

Commit 7a7483d

Browse files
committed
Merge branch 'master' of github.com:xinuc/ruby_basic
2 parents 1fcbfac + c9f2099 commit 7a7483d

File tree

2 files changed

+185
-3
lines changed

2 files changed

+185
-3
lines changed

Session1.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,87 @@ puts item # error
486486
```
487487

488488
## Ranges
489+
490+
_Range_ memberikan cara mudah untuk merepresentasikan urutan alfanumerik (angka dan huruf).
491+
Range dapat digunakan sebagai sekuens maupun untuk pengecekan interval.
492+
493+
```ruby
494+
one_to_ten = 1..10
495+
a_to_z = "a".."z"
496+
a0_to_z9 = "a0".."z9"
497+
```
498+
499+
### Range Sebagai Sekuens
500+
501+
Range dapat diperlakukan sebagai array dan diiterasi:
502+
503+
```ruby
504+
(1..20).each do |num|
505+
puts num
506+
end
507+
```
508+
509+
Ukuran langkah tiap satuan item dapat ditentukan dengan method `step`
510+
511+
```ruby
512+
(1..20).step(3).each do |num|
513+
puts num
514+
end
515+
```
516+
517+
### Range Sebagai Interval
518+
519+
Range dapat digunakan untuk menentukan apakah suatu angka/string termasuk dalam interval tertentu
520+
521+
```ruby
522+
(1..20) === 22 # => false
523+
```
524+
525+
Ini berarti range dapat digunakan dengan mudah dalam statement `case...when`
526+
527+
```ruby
528+
num = 9001
529+
530+
case num
531+
when 1..10
532+
puts "Below ten"
533+
when 10..9000
534+
puts "Below nine thousand"
535+
else
536+
puts "Over nine thousaaaand!!!"
537+
end
538+
```
539+
489540
## Regular Expressions
541+
542+
_Regular Expression_ dalam ruby ditangani oleh kelas `Regexp`.
543+
Untuk membentuk regular expression, sintaks yang digunakan sama dengan Perl.
544+
Regular expression dalam ruby juga memiliki fitur string interpolation.
545+
546+
```ruby
547+
movie_title_regexp = /^the/i
548+
549+
string = "the"
550+
also_movie_title_regexp = /^#{string}/i # => /^the/i
551+
```
552+
553+
Untuk mencocokan pola regular expression dengan sebuah string, bisa menggunakan method `=~` atau `[]` dari string.
554+
`=~` mengembalikan indeks pola yang pertama kali cocok, sedangkan `[]` mengembalikan substring yang cocok.
555+
556+
```ruby
557+
has_and = /and/i
558+
559+
"Sand Man" =~ has_and # => 1
560+
"Sand Man"[has_and] # => "and"
561+
```
562+
490563
## Symbols
564+
565+
Ruby memiliki object spesial yang bernama *symbol*. Symbol selalu diawali dengan titik dua `:`,
566+
seperti `:indonesia`. Hanya memiliki satu copy untuk setiap symbol, sehingga symbol yang sama
567+
pasti memiliki object yang sama.
568+
569+
Symbol biasanya digunakan sebagai `key` atau indentifier dalam hash atau object ruby.
570+
491571
## Hashes
492572
## Methods

Session4.md

Lines changed: 105 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ yang bisa kita pakai sesuai kebutuhan kita.
77
Standar distribusi library di ruby adalah dengan menggunakan format yang
88
bernama *gem*.
99

10-
### Leveraging Libraries
10+
### Instalasi & menggunakan gems
1111

1212
Sebuah gem adalah suatu kumpulan file library beserta metadatanya yang
1313
dikompresi dengan gzip, biasanya dengan ekstensi `.gem`.
@@ -18,14 +18,116 @@ perintah
1818
$ gem install <nama gem>
1919
```
2020

21+
contoh, kita akan menginstall builder, library untuk membuat dokumen xml:
22+
23+
```
24+
$ gem install builder
25+
```
26+
2127
Untuk menggunakan library, baik yang bawaan ruby maupun yang diinstall
2228
menggunakan gem, kita menggunakan method `require "<nama file>"`.
2329

24-
### RubyGems & Bundler
30+
```ruby
31+
require "rubygems" # tidak dibutuhkan untuk ruby 1.9 ke atas
32+
require "builder"
33+
34+
xml = Builder::XmlMarkup.new
35+
xml.person do
36+
xml.name "Slamet Riyadi"
37+
xml.location "Indonesia"
38+
end
39+
```
40+
41+
### Bundler
42+
43+
Untuk memanage library-library yang digunakan pada suatu project, kita dapat
44+
menggunakan bundler.
45+
46+
Pada root directory suatu project, kita mencatat semua library yang kita gunakan
47+
beserta versi masing-masing pada file dengan nama *Gemfile*.
2548

49+
```
50+
mkdir my_project
51+
cd my_project
52+
touch Gemfile
53+
```
54+
55+
```ruby
56+
# Gemfile
57+
source 'http://rubygems.org'
58+
59+
gem 'rails', '3.2.3'
60+
gem "authlogic"
61+
gem 'will_paginate', :git => "git://github.com/bukalapak/will_paginate.git"
62+
gem "simple_form", "~> 2.0"
63+
gem "whenever", :require => false
64+
```
2665

27-
## Packaging Programs and Libraries for Distribution
66+
Untuk menginstall library yang dibutuhkan, kita menggunakan perintah `bundle install`.
67+
Bundler kemudian akan membuat file dengan nama *Gemfile.lock* yang mencatat versi
68+
library yang digunakan saat ini, sehingga ketika kita menjalankan `bundle install`
69+
pada lain waktu, kita akan mendapatkan library dengan versi yang sama.
2870

71+
Kemudian pada project kita, kita me-load library menggunakan bundler sebagai berikut:
72+
73+
```ruby
74+
require "rubygems"
75+
require "bundler/setup"
76+
77+
require "authlogic"
78+
```
79+
80+
### Packaging Programs and Libraries for Distribution
81+
82+
Untuk membuat kode kita menjadi gem, kita akan menggunakan bundler untuk menyiapkan
83+
package dan strukturnya, sebagai berikut:
84+
85+
```
86+
bundle gem namagem
87+
```
88+
89+
yang akan menghasilkan struktur direktori di mana kita bisa meletakkan file-file library kita.
90+
Kemudian kita edit file namagem.gemspec dengan data yang sesuai:
91+
92+
```ruby
93+
# -*- encoding: utf-8 -*-
94+
$:.push File.expand_path("../lib", __FILE__)
95+
require "namagem/version"
96+
97+
Gem::Specification.new do |s|
98+
s.name = "namagem"
99+
s.version = Namagem::VERSION
100+
s.platform = Gem::Platform::RUBY
101+
s.authors = ["Nugroho Herucahyono"]
102+
s.email = ["[email protected]"]
103+
s.homepage = ""
104+
s.summary = %q{Gem tanpa fitur}
105+
s.description = %q{Gem tanpa fitur.}
106+
107+
s.add_development_dependency "rspec"
108+
109+
s.rubyforge_project = "namagem"
110+
111+
s.files = `git ls-files`.split("\n")
112+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
113+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
114+
s.require_paths = ["lib"]
115+
end
116+
```
117+
118+
Selanjutnya kita dapat melakukan build gem tersebut.
119+
120+
```
121+
gem build namagem.gemspec
122+
```
123+
124+
Pada umumnya, library ruby opensource dipublish oleh penulisnya ke rubygems.org,
125+
sehingga siapapun dapat menginstall dan menggunakannya dengan mudah.
126+
Kita dapat mempublish gem kita dengan perintah sebagai berikut:
127+
128+
```
129+
gem push namagem-0.0.1.gem
130+
```
29131

30132
## Testing
31133

0 commit comments

Comments
 (0)