Justin Mui

Justin Mui

Basic Tools for Using Ruby

Slide Duration:

Table of Contents

Section 1: Introduction to Ruby
Setting Up Your Environment

22m 8s

Intro
0:00
Installing Ruby
0:06
Ruby-lan.org
0:07
Three Ways of Installing Ruby
2:26
Compiling Ruby-Source Code
3:02
Third Party Tools
3:28
Other Implementations of Ruby
4:48
Windows Installation
5:21
RubyInstaller.org
5:22
Mac OSX and Linux Installation
6:13
Mac OSX and Linux Installation
6:14
Setting Up Debian/Linux
6:42
Setting Up Debian/Linux
6:43
Installing HomeBrew
6:56
HomeBrew for MAC OSX
6:57
HomeBrew Wiki
9:44
Installing HomeBrew
10:02
Setting Up Mac OSX
11:46
HomeBrew, RVM, OSX-GCC Installer, and Install Ruby 1.9.3
11:47
Ruby Version Manager (RVM)
12:11
Ruby Version Manager (RVM) Overview
12:12
Installing Ruby Version Manager (RVM): http://rvm.io
12:35
Install RVM with Ruby
14:20
Install RVM with Ruby
14:21
Install OSX-GCC-Installer
16:18
Download and Install Package for Your OSX
16:19
Install Ruby 1.9.3
17:28
Install Ruby 1.9.3
17:29
Test It Out!
18:09
rvm-help & ruby-v
18:10
Example: rvm gemset create educator
18:52
Set It As Default!
20:47
rvm Use 1.9.3@educator--default
20:48
Intro to Ruby

22m 20s

Intro
0:00
What is Ruby?
0:06
What is Ruby?
0:07
Ruby Standard Library
0:52
Who Created Ruby?
1:22
Yukihiro Matsumoto
1:23
History
2:45
The Name 'Ruby'
2:46
Ruby v0.95
3:10
Ruby v1.0
3:56
English Language Mailing List Rubytalk
4:08
ruby-forum.com & the Mailing Lists
4:27
Ruby In The West
9:51
Ruby on Rails
10:39
The Pragmatic Programmer's Guide to Ruby
11:30
rubyonrails.org
13:34
Current Ruby
14:42
Ruby 1.8.7, Ruby 1.9.3, and Ruby 2.0
14:43
Why Programmers Enjoy Ruby?
15:40
Why Programmers Enjoy Ruby?
15:41
Ruby Is An Interpreted Language
16:21
Ruby Is An Interpreted Language
16:22
What Is It Used For?
16:50
What Is It Used For?
16:51
Ruby is Object-Oriented
18:17
Example: 5.class
18:18
Example: 0.0.class
18:54
Example: true.class
19:03
Example: nil.class
19:12
Object Class
19:19
BasicObject
19:20
Example
19:52
Superclass
20:50
Fixnum → Integer → Numeric → Object
21:32
Basic Tools for Using Ruby

27m 44s

Intro
0:00
Interactive Ruby
0:08
irb: Interactive Command-Line Environment
0:09
Example
0:49
irb-v
0:50
irb-executes terminal
1:02
1.9.3-p125 > 'hi'
1:09
Live Demonstration
1:31
Why Use Interactive Ruby?
2:21
Why Use Interactive Ruby?
2:22
RDoc
3:05
RDoc
3:06
Ruby Core Documentation
3:32
Ruby Core Documentation: Example
5:30
Ruby Core Documentation: Markup
6:12
Ruby Core Documentation: Headings
7:44
Coding Example: RDoc
9:30
Why Use RDoc?
13:02
Learning Core Ruby Functions
13:03
Generating RDoc
15:31
rdoc-help # usage
15:32
Ruby Interpreter
15:57
ruby -- help
15:58
ruby [switches] [-] program [arguments]
16:16
Example: How to Run a Ruby Script
16:28
Rake
18:38
Rake Overview
18:39
Ruby Core Documentation: Rake
19:46
Coding Example: Rake
23:14
Why Was It Created?
24:30
Why Was It Created?
24:31
Lesson Summary
25:13
Lesson Summary
25:14
IDE/script Editors: MacVIM
26:24
Ruby Specifics

20m 45s

Intro
0:00
Ruby Specifics
0:06
Comments
0:51
Hashtags
1:00
Example
1:23
Multi-Line Comment
2:04
Example
3:10
RDoc Comments
4:02
When do you generate an Rdoc?
4:10
Headings and subheadings
4:24
Examples
4:48
Generating an Rdoc - example
4:50
Common Code Conventions
6:28
For every tab use two spaces indentation
7:38
Never use tabs
7:42
Common Code Conventions (Cont.)
8:18
Camel case
8:20
Snake case
9:18
Identifiers
9:44
Constants begin with CAP letter
10:00
Examples
10:10
Identifiers with Different Scoping
10:26
Global
10:34
Instance Variable
10:40
Class Variable
10:46
Examples
10:56
Reserved Keywords
12:22
Do not use reserved keywords in code
12:25
Parentheses are Sometimes Optional
13:04
Functions do not require parentheses
13:16
When in doubt, use parentheses
13:54
Examples
14:10
Newlines Are Statement Terminators
14:20
Examples
15:10
Continuation with a Period
16:20
Period means continue to next line
16:46
Multiple Statements Allowed on a Single Line
17:38
Try not to use semi-colons
17:58
Code Blocks
18:20
Use code blocks for one liners
18:28
Examples
18:40
Recommended for multiple lines
20:16
Ruby Data Types (Part 1)

29m 37s

Intro
0:00
Overview
0:10
Ruby Data Types
0:10
Numbers
0:16
Strings
0:18
Symbols
0:24
Numbers
0:30
Numeric
0:44
Float
0:50
Complex
0:56
BigDecimal
0:58
Rational
1:00
Integer (most popular) - Fixnum and Bignum
1:06
Fixnum stores 31 bits
1:18
Bignum stores larger bits
1:24
All number objects are instances of Numeric
1:28
Integer Literals
2:28
Represent whole-numbers
2:40
Examples - Different bases
2:42
Binary
3:04
Octal
3:30
Hexadecimal
3:44
Examples
4:06
Floating Point Literals
4:45
Examples
4:58
e-value can be capital or lowercase
5:30
Example
5:44
Strings
6:16
Mutable objects
6:18
Used for inserting and deleting text, searching, and replacing
6:26
String Rdoc
6:46
Definition
7:00
String Literals
8:20
Single-Quoted
8:28
Double-Quoted (most used)
8:50
Example
9:32
Escape Sequences
11:10
Newline
11:16
Tab
11:22
Double quote
11:28
Blackslash
11:36
Interpolation
11:50
Sprintf
13:48
Unicode Escaping
14:38
Example
15:50
Delimiters
16:18
Here Documents
17:18
Example
17:25
String Operators
19:58
Concatenation
20:03
Appending
20:40
String Equality
21:04
Example
21:24
Substrings
22:00
Range object (inclusive)
22:22
String Encoding
24:52
Differences between Ruby 1.8 and 1.9
24:56
Symbols
26:02
Definitions
26:04
Examples
26:46
When to use symbols
26:54
Symbols and Strings
27:42
Symbols Rdoc
28:22
Ruby Gems

25m 50s

Intro
0:00
RubyGems
0:08
What are RubyGems?
0:24
RubyGems.org
0:44
How RubyGems are used
2:06
Java's jar utility
2:50
Unix/Linux's tar utility
3:06
What is a Gem?
3:16
Definition of Gem
3:20
Version
3:34
Date
3:44
Author
3:50
Description
5:58
What Are the Uses?
4:18
Uses for Gems
4:22
Installation
5:06
How to install RubyGems
5:30
Updating to the Latest Ruby Gems
5:54
Testing
6:22
Example
6:34
Installing Rake
7:24
Example
7:46
Verifying
9:22
Example
9:56
Structure
10:56
gem.gemspec
11:30
Specification
13:40
What is in the gem?
13:42
Who made it?
13:50
Update gem version
13:58
Example
14:10
Create Our First Gem
17:20
Steps involved
17:28
RubyGems Guides
17:36
Example
20:02
Steps Review
18:56
Create Our First Gem (Cont.)
23:08
Building the gem
19:38
Example
20:00
Installing the gem
22:32
Run it
22:52
Publish it
23:04
Get Some Gems!
25:06
rake
25:14
rails
25:19
fastercsv
25:25
koala
25:37
Ruby Data Types (Part 2)

40m 24s

Intro
0:00
Ruby Data Types
0:15
Boolean
0:21
Arrays
0:27
Hashes
0:33
Range
0:37
Boolean Types
0:42
TrueClass
0:56
FalseClass
1:12
NilClass
1:18
TrueClass Examples
2:48
FalseClass Examples
3:22
Arrays
4:16
Ordered collection of objects
4:22
Can hold different objects
4:32
Starts at index 0
4:50
Array of Strings
5:50
Example
5:52
Arrays (Cont.)
6:20
Can be created using literals
6:22
Can be created using constructors
6:54
Position and indexed value
8:04
Negative Indexed Values
8:56
Shift and Unshift
10:18
Push and Pop
11:38
.delete method
12:38
Addition and Subtraction
13:32
Union and Intersection
14:48
Insert
15:52
Iteration
16:52
Arrays Rdoc
17:48
Hashes
22:08
Maps and Associative Arrays
22:44
Created using the constructor
22:56
Created using a hash literal
24:02
Stored in a hash table
25:26
Example
25:50
Accessing Key-Values
27:46
Deletion
29:48
Iteration
31:04
Hashes Rdoc
32:04
Ranges
36:40
Two dots are inclusive
36:57
Three dots are exclusive
37:16
Example
37:50
Ranges Rdoc
38:24
Objects

1h 5m 46s

Intro
0:00
Objects
0:10
Object References
1:36
Ruby Core
2:16
Example
4:30
Creating New Objects
6:00
New Method
6:08
Initialize Method
6:31
Example
7:18
Garbage Collection
9:54
Global values always reachable
10:25
Object Identity
11:08
Every object has an object identifier
11:20
Object identifier is constant and unique
11:30
Example
11:54
Object Class
12:58
Class method
13:10
Superclass method
13:28
Object Testing
14:46
is_a?
15:49
respond_to?
16:26
String and Regexp
18:10
Comparing two object instances
20:06
Example
23:30
Object Equality
25:48
Comparing objects
25:54
equal?
25:58
Popular way to test for equality
27:16
Opposite way to test for equality
27:25
Arrays
28:30
Hash
29:42
Case equality operator
30:47
Class tests
31:16
Range tests
31:48
Symbol tests
32:32
Object Conversion
33:14
Explicit conversion
33:54
Implicit conversion
35:00
Example
36:12
Object Conversion: Kernel Module
38:22
Array
38:38
Float
39:26
Integer
39:58
String
40:10
Example
40:34
Object Conversion: Coerce
42:00
Used for mixed type numeric operations
42:08
Example
43:40
Object Conversion: Boolean
47:42
Every object has a boolean value
47:44
Example
48:54
Object Copying
50:52
dup
50:58
clone
51:03
Example
51:42
Object Freezing
57:36
Object Marshaling
58:38
Save state
59:04
Load state
59:27
Example
59:32
Tainted Objects
1:01:50
taint
1:02:08
farm field
1:02:12
Untrusted Objects
1:04:06
trust
1:04:24
untrust
1:04:34
untrusted?
1:04:42
Loops

38m 54s

Intro
0:00
Loops
0:12
while and until
0:48
for and in
0:54
iterators
1:04
enumerable in objects
1:06
While-loop
1:14
Will keep going is condition is true
1:18
Until-loop
2:58
Will keep going until condition becomes true
3:06
Single Expression Loops
4:20
Compact form
4:30
Expressed as a modifier
4:42
Do-While Loop
5:52
Executes body first
6:06
Do-Until Loop
7:54
Similar to do-while loop
7:58
Using Break Inside Loops
8:54
break
8:58
For-In Loop
11:56
for-loop
12:06
var
12:34
collection
12:54
body
13:00
Examples
13:08
Examples (Cont.)
15:54
Nested loops
16:40
Numeric Iterators
18:32
upto
18:40
downto
18:42
times
18:48
Examples
20:28
External Iterators
21:00
Enumerator class
21:04
Rdoc
21:16
Enumerables in Objects
24:35
Enumerable is a mix-in
24:41
RDoc
25:24
Commonly Used Enumerables in Objects
27:01
Array
27:19
Hash
27:51
Range
28:47
Examples
29:29
Enumerables in Objects (Cont.)
31:13
File Processing
31:15
Example
31:45
Enumerables in Objects (Cont.)
33:07
collect
33:23
select
34:11
reject
34:59
inject
35:29
Strings

28m 30s

Intro
0:00
Strings
0:08
Why do you want to get familiar with strings?
1:00
String Creation
1:16
new
1:28
empty?
1:50
length or size
2:10
Example
3:12
String Manipulation
4:40
slice
4:56
square brackets [ ]
5:02
token
5:40
[fixnum]
6:52
offset and length
8:40
chaining
12:42
String Insertion
12:56
insert
12:58
positive or negative index
13:46
String Updates
15:24
[token]
15:36
Examples
16:40
chop or chop!
17:54
chomp!
18:56
gsub
20:28
String Deletion
21:38
delete
21:38
String Reversal
22:46
reverse
22:52
String Manipulation
23:16
split(pattern=$, limit)
23:22
pattern
24:10
limit
24:15
upcase or upcase!
25:28
downcase or downcase!
26:02
swapcase
26:24
Incrementing Strings
27:26
next or next!
27:32
Check Out the Other Lessons
28:00
Ruby Data Types Part 1
28:12
Regular Expressions
28:18
Regular Expressions

33m 27s

Intro
0:00
Regular Expressions
0:10
How to create a regular expression
0:48
What goes inside
1:36
Metacharacters
3:10
Bracket expressions
3:14
Quantifiers
3:18
Anchors
3:20
Metacharacters
3:30
word and non-word characters
4:04
digit and non-digit characters
4:44
hexdigit and non-hexdigit characters
4:56
whitespace and non-whitespace characters
5:08
Examples
5:24
POSIX Bracket Expressions
7:48
Non-POSIX Bracket Expressions
9:48
Bracket Expression Examples
10:58
Quantifiers
12:34
Examples
13:30
Character Properties
17:24
Similar to POSIX bracket classes
18:22
More Character Properties
18:48
Examples
19:32
Anchors
20:08
Examples
21:14
Regular Expression Matching: Regexp Object
22:40
match
22:51
Regular Expression Matching: String Object
24:14
match
24:26
Regular Expression Modifier Characters
25:14
pat
25:38
Example
26:42
Regular Expression Modifier Objects
27:14
Example
28:38
Regexp Rdoc
30:40
Arrays

14m 35s

Intro
0:00
Arrays
0:12
Creating an Array with a Block
0:50
Alternative Ways to Create an Array
3:52
Checking the Class
5:14
Iterate through the array
5:26
Call the class method
5:28
Array Shortcuts
6:38
at(index)
6:44
delete_at(index)
7:28
first(n)
8:28
last(n)
9:28
Removing Duplicates
9:58
uniq or uniq!
10:04
Sorting the Array
10:48
sort or sort!
10:54
Getting the Index
11:35
index
11:56
rindex
12:38
Multidimensional Arrays
12:56
flatten
13:33
Check Out the Earlier Lesson
14:16
Ruby Data Types Part 2
14:26
Hashes

27m 48s

Intro
0:00
Hashes
0:12
Creating Hashes
1:18
Setting a Default Value
2:24
Accessing Hashes
4:16
Accessible by keys or by values
4:28
Keys must be unique
4:36
Creating Hashes
5:16
Comma-separated list
5:42
Hash rocket
8:28
Examples
10:16
Iterating Keys and Values
11:43
each_key
12:04
each_value
14:04
Merging Hashes
16:10
merge(other_hash)
16:20
Sorting Hashes
18:46
Replacing Hashes
20:57
replace(other_hash)
21:18
Converting Hashes to Other Classes
22:04
to_a
22:22
to_s
23:22
Example
24:34
Check Out the Earlier Lesson
27:22
Ruby Data Types Part 2
27:32
Math Operations, Part 1

28m 47s

Intro
0:00
Math Objects
0:12
Numeric
0:26
Integer
0:38
Float
1:02
Fixnum
1:14
Bignum
1:56
Rational
2:04
Math
2:24
Math Operations
2:36
Example
3:14
div(numeric)
4:54
divmod(numeric)
6:30
modulo(numeric)
7:23
quo(numeric)
8:18
remainder(numeric)
9:35
Operation Precedence 1 of 3
10:35
Operation Precedence 2 of 3
13:18
Operation Precedence 3 of 3
14:28
Abbreviated Math Operations
14:54
Move the operator in front of the equal sign
15:52
Numbers
16:36
Numeric Class
17:06
Numeric Methods
18:41
ceil
18:52
floor
19:32
round
19:50
Example with Numbers
20:20
Numeric Methods (Cont.)
22:20
truncate
22:28
num.step(limit, step)
23:02
Numeric Rdoc
25:26
Math Operations, Part 2

28m 51s

Intro
0:00
Math Operations
0:12
Math Module
0:24
Rational Numbers
0:44
Complex Numbers
0:52
Prime Numbers
0:58
Matrices
1:06
Math Module
1:12
PI and E
1:32
Math Module Methods
2:47
atan2(x,y)
2:56
cos(x)
3:14
exp(x)
3:44
Examples
4:38
log(x)
5:44
log(num, base)
6:34
log10(x)
7:04
sin(x)
7:34
sqrt(x)
7:52
tan(x)
8:06
Math Functions: Part 1 of 3
8:12
Math Functions: Part 2 of 3
9:32
Math Functions: Part 3 of 3
10:19
Math Module Rdoc
11:25
Rational Numbers
13:23
How to use
14:06
Example
15:02
Mathematical Ruby Scripts (Mathn)
16:25
Example
17:28
Complex Numbers
18:26
polar
18:56
rect
19:10
Complex Number Examples
19:18
Prime Numbers
20:14
each(ubound=nil)
20:44
prime?
21:22
Example
21:58
Matrices
23:15
build(row_size, column_size=row_size)
23:44
Example
24:44
Matrix Rdoc
24:58
Dates and Times

26m 1s

Intro
0:00
Dates and Times
0:12
Time Class
0:38
Methods of the Time Class
1:43
now
1:44
at(time)
2:10
Epoch & Unix Timestamp Conversion Tools
3:19
Components of a Time
5:07
Convert Time to an Array
5:54
to_a
6:08
Creating a New Time
6:48
Time.local
7:08
Year is required
7:22
Time.utc
8:12
What should be specified
9:30
More Methods of the Time Class
10:16
strftime(string)
11:26
RDoc
12:50
Date Library
16:46
Initializing a New Date
17:08
Parsing Dates
18:28
parse(string)
18:42
Today's Date
19:19
Date.today
19:22
Tomorrow's Date
20:22
Next
20:28
Next week
21:22
Count Down
21:26
Count Up
22:37
Components of a Date
23:20
Converting to Datetime
23:48
to_datetime
24:00
Initializing a Datetime
24:24
Converting to Time
25:23
self.to_time
25:32
Methods: Part 1

31m 24s

Intro
0:00
What is a Method?
0:12
Basic Method
0:58
Return Value
4:37
return
4:46
Factorial Example
6:18
Example
8:46
Return Two Values
10:06
Set the return keyword
10:14
Collected and returned as an array
10:28
Undefining Methods
11:22
undef method_to_undefine
11:44
Example
12:32
Method Names
13:02
Begin with lowercase letter
13:16
Separate longer words with underscores
13:26
Can end with equal sign, question mark, or exclamation point
14:03
Equal sign
14:26
Method Names with Question Mark
14:44
empty?
15:24
Method Names with Exclamation Point
16:01
mutators
16:12
! means use with caution
16:46
Method Aliases
18:05
alias new_method existing_method
18:42
Operator Methods
20:00
Operators
20:02
Array Operators
20:10
Unary Operators
20:32
Binary Operators
20:40
Example
21:28
Methods and Parentheses
25:00
Optional in most cases
25:20
Required in other cases
27:13
Methods and Blocks
27:54
Associated with blocks
28:18
block_given?
28:26
yield
28:36
Example
29:24
Methods: Part 2

20m 11s

Intro
0:00
Methods with the Unary Ampersand Operator
0:14
&
0:34
Block to a Proc
0:56
Example
2:02
Proc object
3:58
Example
5:04
Methods with Default Values
5:54
Example
7:12
Methods with variable-Length Arguments
8:05
How to create it
8:36
Example
11:06
Using Hashes with Arguments
13:02
Multiple arguments
13:08
Solution
13:30
Example
14:56
Rdoc
18:12
Classes: Part I

26m 51s

Intro
0:00
Classes
0:10
Definition of a class
0:14
Class represents a container
0:32
Can be reused
0:46
Creating our First Class
1:00
Keyword class will create new class
1:06
Name must begin with capital letter
1:30
Instantiating Our First Class
2:46
New will create a new instance of class
2:58
Initializing Values
3:58
Definition of def
4:14
Instance method
5:08
Example
7:02
Defining the to_s Method
8:24
Creating a string representation class
8:34
Example
10:54
Self in the Class
12:16
Definition of self
12:26
Example
13:54
Accessor Methods
15:52
getter methods
16:22
Example
17:00
Setter Methods
18:00
Mutator methods
18:02
Example
19:46
Automating Getter and Setter Methods
21:10
Defined in the module class
21:30
attr_reader
21:54
attr_writer
22:48
attr creates getter and setter methods
23:50
Example
24:28
Notes on Ruby's Accessor Methods
25:32
Classes: Part II

26m 42s

Intro
0:00
Defining Operators
0:10
You can define arithmetic operators
0:32
Unary Operators
0:46
Let's define operators in our class!
0:56
Example
2:52
Class Methods
6:24
Examples
6:56
Opening Up the Class
9:38
Adds an additional method
9:54
Examples
11:04
Array and Hash Access Method
15:40
Use square brackets
16:02
Define your own has access method
16:08
Example
16:56
Enumerating The Values
18:40
Define the each iterator
18:40
Testing for Equality
19:36
Class Triplex
19:50
Examples
20:54
Constants
25:00
Usually defined at the top of class
25:24
Classes: Part III

53m 36s

Intro
0:00
Class Variables
0:14
Example
2:16
Ruby Glass Jar Example
8:50
Class Instance Variables
10:20
Instance variables of class objects
10:46
Advantage of class instance variables
11:18
Examples
11:30
Method Visibility
16:16
Three types of method visibility
16:26
Public methods
17:34
Private methods
17:38
Protected methods
18:04
Invoking Method Visibility
19:21
Public , Protected, and Private Visibility
19:22
Invoking Method Visibility With Arguments
21:39
Example: Invoking Method Visibility
22:12
Class Visibility
23:31
Instance and Class Variables are Private
23:32
Constants are Public
24:00
Makes Existing Class Methods Private
24:27
Makes Existing Class Methods Public
25:08
Example: Class Visibility and class GlassJar
25:43
Subclassing
27:08
Subclassing: Subclass and Superclass
27:09
Example: Subclassing
29:43
Inheritance
30:05
Inheritance
30:06
Example: Inheritance
31:25
Subclassing and Inheritance
31:34
Descendants
31:41
Ancestors
31:56
More On Descendants and Ancestors
32:08
Extending a Class
33:27
Extending a Class
33:28
Coding Example: Extending a Class
34:24
Overriding a Method
36:41
Overriding a Method
36:42
Coding Example: Overriding a Method
37:18
Modifying Methods with Chaining
38:52
Modifying Methods with Chaining
38:53
Super
39:25
Coding Example: Modifying Methods with Chaining
39:51
The Singleton Pattern
44:52
Introduction to The Singleton Pattern
44:53
Setting Up Singleton
45:28
The Instance Method
45:58
Rdoc for Singleton: Usage
46:23
Rdoc for Singleton: Implementation
47:45
Coding Example: Singleton
49:38
Modules

24m 19s

Intro
0:00
Modules
0:04
What is Modules?
0:05
Modules Examples
0:40
Modules: Mix-Ins
3:31
What is a Mix-in?
3:32
Modules: Namespace
4:07
What is a Namespace?
4:08
Why Use a Namespace?
5:13
Example of a Namespace Module
5:59
Example of Mixing in The Module Into the Global Scope
6:00
Modules: Creation
7:04
How to Create a New Module?
7:05
Modules: Usage
8:19
How to Use It?
8:20
class Poker & class Bridge
9:13
Creating Our Module as a Mix-In
9:41
Example of a Module Using Instance Methods
9:42
Coding Example
10:20
Creating Our Module as a Namespace
12:11
Implement Class Methods for the Module
12:12
Coding Example
14:56
Loading Our Module
19:46
Loading Our Module Overview
19:47
Require & Load
20:15
Coding Example: Loading Module
20:48
Lesson Summary
23:36
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to Ruby
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Lecture Comments (8)

1 answer

Last reply by: Professor Mui
Thu Oct 24, 2013 10:58 AM

Post by Norman Cervantes on October 23, 2013

(3:45) are we supposed to install rdoc by typing "ruby install.rb" ?
because i tried that and i got this back exactly
ruby: No such file or directory -- install.rb (LoadError)

1 answer

Last reply by: Professor Mui
Tue May 21, 2013 10:14 AM

Post by Eric Klein on May 21, 2013

You do not do a good job on explaining how to get into using this environment and everything...
Someone like me who wants to learn how to use this knows nothing...Everything needs to be explained. You can't just tell me this is the Rdoc and this is the Rake... We need to know what you need in order to use ruby, everything associated with it and why you need it... and then explain everything...
Too much was assumed here and not a good timeline of explanations...
What am I supposed to use on a PC?...This is just disappointing...

3 answers

Last reply by: Professor Mui
Tue May 21, 2013 10:15 AM

Post by Jonathan Aguero on January 16, 2013

can you create websites with Ruby?

Basic Tools for Using Ruby

  • This lesson teaches you the basic tools necessary to develop ruby.
  • interactive ruby (irb) allows you to see results or errors after you enter each statement through a command-line environment
  • interactive ruby is useful for debugging, learning ruby, and development
  • rDoc allows you to generate documentation from Ruby source code
  • rDoc is key to understanding libraries
  • the ruby interpreter allows you to execute ruby files
  • rake is a build tool that allows you to build, compile, and process large files
  • rake is similar to make (for C) or apache ant (for Java) but completely defined using Ruby syntax

Basic Tools for Using Ruby

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Interactive Ruby 0:08
    • irb: Interactive Command-Line Environment
  • Example 0:49
    • irb-v
    • irb-executes terminal
    • 1.9.3-p125 > 'hi'
    • Live Demonstration
  • Why Use Interactive Ruby? 2:21
    • Why Use Interactive Ruby?
  • RDoc 3:05
    • RDoc
    • Ruby Core Documentation
    • Ruby Core Documentation: Example
    • Ruby Core Documentation: Markup
    • Ruby Core Documentation: Headings
    • Coding Example: RDoc
  • Why Use RDoc? 13:02
    • Learning Core Ruby Functions
  • Generating RDoc 15:31
    • rdoc-help # usage
  • Ruby Interpreter 15:57
    • ruby -- help
    • ruby [switches] [-] program [arguments]
    • Example: How to Run a Ruby Script
  • Rake 18:38
    • Rake Overview
    • Ruby Core Documentation: Rake
    • Coding Example: Rake
  • Why Was It Created? 24:30
    • Why Was It Created?
  • Lesson Summary 25:13
    • Lesson Summary
    • IDE/script Editors: MacVIM

Transcription: Basic Tools for Using Ruby

Welcome back to educator.com. Today's lesson is on using basic tools for using Ruby.0000

The goal is to look at a lot of common tools that I will be using, and you will be using, when you develop in Ruby.0007

The first one, that is most important, is Interactive Ruby (IRB).0016

It's a command you can use in the terminal to run Ruby commands.0023

Without even building any code, you can just debug and test things with it.0028

So, that is IRB. It's called the Interactive Command-line Environment.0033

It's good, because I can see results or errors after I enter each statement.0040

So, some examples: first, I can run "irb-v" and it will tell me what version I'm running. So, it says I'm running 0.9.5.0046

Afterwards--if I execute "irb"--no arguments-- it's going to execute the IRB terminal, and you will notice it's executing, because you will see the Ruby version and the patch number to it.0060

Then, it has this "greater than" sign that tells you, "You can enter a Ruby command here."0078

So this command...I put "hi"...it spits back a string of "hi."0085

I can do some math commands in there. Let's go ahead and see it live.0090

Like I said, you can do irb-v...actually, now I'm on 0.9.6.0095

Put in "irb" and press return...I can try some different things.0101

I can put in strings--"test"--it returns "test" back-- like a reason; it says, "OK, I'm going to return that string back to you";0106

I can do "15+5"; it says "20."0114

I can do some standard output commands. I can do puts "hello world," and it looks like it's working fine.0119

When I want to quit it, all you do is just put exit, and it returns out.0126

It's a good way to test my Ruby code as I'm developing, to check and see if certain things are working right, if I can load specific modules.0130

And libraries, and gems.0137

So, why use Interactive Ruby?0143

Like I said, use it for debugging.0147

When you are creating your code, you are going to have complicated classes, modules, objects...use it for debugging, so you are not having to go through all these steps--you can just look at that one piece and fix it.0151

We're playing around with Ruby, just getting more familiar with the system, getting more familiar with libraries, modules, and Gemsets...you want to learn how it works.0165

Getting more familiar is always good. Using this Interactive Ruby, we can do this.0177

The next one we want to look at is this tool called RDoc.0182

It's the documentation tool system in Ruby.0191

You might use JavaDoc for Java; Ruby uses RDoc.0197

And what this will do is it will generate your documentation from the Ruby source code.0201

But they do have a syntax, and they do have a layer--a structure of how you want to do it.0206

So, to let you see it, we are actually going to go and look at the Ruby core documentation, and take a look at how to build it first.0213

We're looking at the Ruby Documentation System.0220

Do you notice, at the top, they have the structure--"Methods," "Classes," "Files"--0230

This is actually their own "RDoc" of the RDoc app itself!0234

At this RDoc library, they actually tell you the libraries they use for their methods.0241

We actually don't want to look at the underlying things, though; we just want to understand it.0246

First, they give you a nice intro: it tells you, "This package uses RDoc; it uses simple markup. It's an application that produces documentation for one or more Ruby source files."0251

When it generates this documentation, it's going to generate it using HTML.0264

So the output is going to be HTML as it generates it. It tells you how you install it; we already set it up with our "setting-up-the-environment."0271

But, for those that didn't use RVM, it would tell you here how to do it, as well.0280

But we want to move on to the summary here.0287

Just see its usage: it's a command-line; you just run rdoc; it takes flags, options, and names.0292

This is most important: a typical usage, just to generate the documentation, all you do is run rdoc and return;0299

But to generate documentation for your source code, "This command generates documentation for all the Ruby and C source files in and below the directory."0306

So, now that we know how to do it, we know how to install this RDoc.0317

But how do I know the way to structure it in my code?0325

Let's go ahead and do that now. First, you can see the usage: here are all the flags you can put in it...0329

For our purposes, we just need to run RDoc.0336

But first, let's look at an example of how they do it. You will notice they use a lot of these hashtags.0341

These hashtags are actually comments in Ruby.0347

You see that they have author, copyright, and license.0352

RDoc would generate that out, and it will make it look very neat, to show these different properties.0356

Here they have an example of a class, some methods, and all of this will be documented in the RDoc code.0363

What's important to us is that markup code. This is how I standardize it,0372

and organize this code in the RDoc.0378

First, it says, "comment blocks can be written fairly naturally."0382

And, it tells you I can make paragraphs. "Paragraphs are lines that share the left margin.0386

Texts indented past this margin are formatted verbatim."0390

If I want to make lists in RDoc, it says I can use stars or dashes for bullets in my bullet lists.0394

Put one each time, and it will generate that into a bullet list.0400

"For example, the list that produced the above paragraph looked like..."0405

it has the description, then it has a star, then it has bullet points.0411

Let's look at the next one, number 2--Labeled lists--"Labeled lists...are typed using square brackets for the label.0419

So, you just do the square brackets, put the label in, and then you will notice they have plus signs as a command to copy the standard input.0426

Also, they have a labeled list that may be produced by using "a double colon after the label," which we saw in their example code. "This sets the result in tabular form, so the descriptions all line up."0434

"This was used to create the 'author' block at the bottom of this description."0448

Author, label...you can put the title...0452

And that's that.0457

Let's move on to the headings.0464

On the headings, notice that a Level 1 heading has one equals sign.0470

A Level 2 heading has two equals signs.0478

What happens...a Level 1 heading is like an <H1> tag--it's a very big heading.0483

2 would be a subheading to that; a Level 3 is a sub-subheading.0489

So, just like <H1>, <H2>, <H3>...it's going to get smaller and smaller.0495

You can do your subtopics. You can also do italic, bold, and typewriter font-- you just add this italic, bold, typewriter tag. I'll show you how to do that.0500

Names of classes, source files, and methods, "containing an underscore or preceded by a hash[tag], are automatically hyperlinked from comment text to their description."0513

It will also tell you how "method parameter lists are extracted and displayed with the method description."0526

"If a method calls yield, then the parameters passed to yield will also be displayed."0535

So, if it runs yield like this statement, which we will get to later, then it will tell you what method it calls it, and also what parameters will be displayed to it.0540

And then there are other directions with the comments, but you can look at that, and just get into it, to see it in action.0560

What I'm going to do now is run the terminal.0571

I actually have two code files ready.0575

I have a book rb and a hello world.0581

What we are first going to do is, let's go ahead and look at the code, before we actually generate the RDoc.0586

First, here is our book example.0597

It's a class...attribute assessors...0602

It has a class variable,0607

some for instance variables, and some methods.0611

I didn't actually put any R documentation in here.0615

So let's look at...an even better example, but we can still see this in action after we do RDoc.0618

It still gives good information, even though we haven't documented it.0623

Here we have a hello world, and this...I do have a class itself...I'll show you puts "hello world"0627

And you will notice that I do have headings here. I used that equals sign.0634

And I used equal equal for a subheading, and we have a sub-subheading over here.0638

And every heading, afterwards I put some verbage...so let's see how that looks in RDoc.0643

We have our headings here, we did a little markup, and let's go ahead and generate that out.0651

Back in my terminal, I just run RDoc.0656

Very simple command...you will notice it says three fouls.0660

It says how many classes, attributes, methods, and it says, "OK, ten percent is documented now."0665

Now, when I run List again, you will notice that there is a directory here that says "Doc."0670

If I go in that directory, you will notice that there are a bunch of files there now.0676

I'm going to open that index, that HTML.0681

And you see it says the RDoc documentation, it gives us two classes, and it gives us four methods. Let's go ahead and look at that book example.0686

We saw the code to it. Notice how it organized it. We had those four attributes: it says author, content, description, title.0697

And we had a public class method, and you see it there, and it tells you the arguments and the parameters for it.0706

Then, we have two instant methods: we have a summary and wordcount.0711

I can click on it, and it will expand it out and give me the sourcecode to that.0716

So it will give you the line numbers--it's nice--and that code, they parse it out, and they organize it here for us.0720

But a better example is--let's go to that other class, with the hello world--0728

It had a class code, myfirstclass. It's a very bare, simple one; it only had one method.0733

But notice my headings. Here is that one equals sign.0739

Then we have our subheading here, and our sub-subheading here, and they get smaller, and the text that I put below it--it has a text block there for that, as well.0743

And I can click on it, and it shows me the method.0756

I can click back to home, and it will go back to home of the RDoc.0760

And you see it has the classes and methods there. Again, RDoc does generate in HTML--you see some HTML here.0766

Let's close that back up...so that is RDoc for you.0775

So, why use RDoc?0781

One reason is to learn the core Ruby functions.0786

RDoc is key to understanding libraries. Sure, we took our existing code and generated our own RDoc.0793

But you also want it to learn about the Ruby code--the standard library in Ruby.0802

If I want to learn the Ruby core code base, this is very important.0809

What I can do now is...let's go...I can show you that.0815

So this is actually the RubyDoc for the Ruby core.0820

We are actually going to reference this quite often in a lot of these lessons.0826

They have one section for the methods and one for classes.0830

For example, let's say that I wanted to learn more about that Fixnum class that we talked about.0835

This one is methods, so it will tell me all about the methods, but what do I want to learn about a class?0843

I know exactly which one I want to look at, so I can go up here, and those are in alphabetical order.0853

Now that I have found Fixnum over here, I can click on that, and it will give me RDoc information about this Fixnum class.0858

It will have it here. It tells you about instance methods--it will tell you about class methods, too--it gives you text descriptions of what they do, and it gives you examples, as well.0869

So you see, even the core libraries use RubyDoc to document their own code, and now you can do as well in your own code.0882

And you will notice also, in this Ruby core, there is quite a bit of libraries and objects here.0895

For this course, we will go over quite a bit of these classes and method objects--many of the common ones.0904

There are a lot of them here, but we will go over many common ones, so it makes it a lot easier to get familiar and learn other ones, as well.0914

RDoc is key to understanding the libraries. Once you get going, it makes it a lot easier to develop, as well.0922

I just showed you generating the RDoc; you just run this doc command, and you saw that it generated into this Doc directory.0931

We saw the RDoc documentation, and you can run rdoc-help; it will give you the usage information,0943

and if you will need to add any special flags or commands to that, as well.0952

The next thing that we are going to look at is the Ruby Interpreter. You are going to use this quite a bit.0959

We have our code pieces...you want to run a script. You are going to use it as a script.0964

You can just run ruby--help to see if there are any particular things you want to run with that.0969

You can run that ruby--help, and you will see that there are different switches, to program, where you actually put in the filename and any arguments you want to put to that.0977

For example, I can just run Ruby, put the program here, press Return, and it will execute it.0988

For example, we were using the hello world; all you have to do is run ruby helloworld.rb, and it will execute that Ruby script. Let's go back to that code.0995

Ignore all that markup--all that description.1005

You know it's there. It says ruby helloworld. But we want to look at that code.1010

We have this class that has one method. It says "test."1015

Actually, even though it has this class method, it's not even using it. It's just puts "hello world".1021

Let's go ahead and use it. Let me just say...some code...first class=myfirstclass.new...1029

And I'll just output that.1036

For this method...so it should output "hello world" and "test."1040

We have that saved there; now let's go ahead and execute it.1048

I'm out of my RDoc directory; I'm back in the current relative directory of my code, which would be hello world; And notice how it outputs "hello world" and "test".1054

So, it did exactly what I wanted it to do. I ran that Ruby command...1071

Let's just run ruby-help and see what other usage things I can do with this command.1077

You will also see the switches, the program for all the arguments...1083

And there are a lot of different arguments, depending on what you're doing.1088

You will find them important for your task at hand.1091

Just for this simple strip, we're not going to use any of them.1095

You can check your version, too--just ruby--version--1103

And that is the Ruby Interpreter.1107

You will use that quite often.1111

The next one we're going to looke at is Rake.1117

This is a build tool that helps you build, compile, and process large files.1122

You can tell it to do complicated tasks, but make it one simple push-button.1129

You can say, "Rake, I want you to deploy all this to all these servers."1137

You can write all the different pieces to that, and next time around, it's already implemented; just run Rake, deploy to all servers, and it will push it all out there.1141

There are some similar tools like this in other languages.1151

In C, you have Make; in Java, you have Apache Ant.1155

If you ever run Ant, it's kind of like Rake in that you just run your Ant command, and then you run your file, or your task.1161

So, bringing that to Ruby, you would have Rake.1178

You would put your task here.1182

Let's go ahead and look at the Rake RDoc.1187

We'll get a better feel of how it is used and how we can build it ourselves, for our own code.1191

This is actually from our own RDocumentation, but here it is: rake.rubyforge.org--1199

There is some information here: it's called Rake; it's called Ruby Make;1209

"This package contains Rake, a simple ruby build program with capabilities similar to make."1215

It "has the following features: Rakefiles...are completely defined in standard Ruby syntax."1220

Is that interesting? The tool is all built in Ruby, as well.1227

No XML files, no Makefile syntax.1232

It supports patterns for tasks, Flexible FileLists, and it has "a library of prepackaged tasks to make building Rakefiles easier."1237

..."tasks for building tarbells and publishing to FTP or SSH sites."1245

To install Rake, all you have to do is run gem install rdoc, push Return, and it will install Rake.1249

If you want to get deep into the code, all you have to do is add these things called tasks to it.1260

So, following this example, "You must write a 'Rakefile' file which contains the build rules." And here is the example:1273

If I just want...in Rake, you can tell it to default a task.1281

So when I want to run Rake, I say, "I want you to default to run a task called 'test.'"1285

When I do that--I press rake test or rake return--1290

it's going to run Ruby Interpreter and the file.1297

As you see here, it says it has two tasks: a task named rake, which, upon implication, will run a unittest in Ruby--and you see, it says unittest.rb, and a task named default, which does nothing, but has one dependency, namely that test task.1302

So, that default says, "I want to run this test task," but it's also an array, so I could add multiple tasks into this array.1320

You just give a comma and add more tasks to do sequentially, one by one.1329

You see how they run it here; they run Rake; it's going to automatically run that Ruby command.1334

No more do I have to go through ten lines every time I run a command; I can just use Rake and give it all in that one task.1342

"Handle it for me. Organize it."1348

Then you are going to go more in here--they give you a lot of documentation about reports, about Rake...1353

there is a GetHub where you can make requests and comment on things...1362

We can see the codes, too, for Rake--there are source codes out, open source, at GetHub.1368

Then they have reference materials here--presentations and articles about it and more references we can look at about Rake, and just get a really good feel of it.1375

I think what we should do here is actually show examples of it.1390

I actually have one. We're using that hello world.1398

Using that example, we just use that task: default,1402

And when I tell Rake I want to run that hello world,1406

that thing you saw, the hello world test, is going to do the same thing when I run this Rake command.1411

To know I have it installed, I can just do rake-whatever version.1416

OK, it's there...rake-help, and you notice how it can output that1424

If I run Rake, it executes that task.1434

This will be hello world--it's hello world test.1439

And also, I can just run the task itself, specifically--so I can just run ruby hello world,1442

And...oops, I meant rake hello world...1447

And then it will run that task.1452

And that runs ruby hello world. "hello world" "test".1457

We have that code...and that is your Rake.1464

So, why was it created?1470

It removes all of that weird Make syntax that we were seeing in the past.1478

You don't have to worry about XML scripts, like in Ant.1483

It's platform-independent build scripts. So no more weird syntax; you can use Ruby, which is great.1490

No more XML--platform-independent. And you can run Ruby anywhere now where it exists.1500

No more need to have Make installed; that is a great reason, as well.1506

So, in summary, what have we learned today?1512

We learned the IRB, the Interactive Command-line Interpreter-- the Ruby Interpreter-- to run our executables, RDoc to do our documentation, and then we learned about Rake, which handles our complex tasks and makes them simpler.1520

Those are the few tools that you will be using quite often1556

That is why we brought it into the lesson.1569

Now that you know these tools, we can use them, going forward, with the next lessons, as well.1574

Before that, I also want to show you the ID editor I will be using1582

When I'm editing and showing code, as you saw,1593

I'm using a program called Mac Vim, so if I go ahead and Google Mac Vim,1597

It's the top one, Vim for Mac.1604

They also have Vim for Windows.1607

Just search for Windows Vim and you can get it, too.1612

But it's a text editor--Vim for Mac OS X.1616

You can just click this link and download it, install it, and then you can use the same editor I've been using.1620

You can open .rb files and edit them.1626

Open source is free. It's nice. It does the job.1632

So, also, we want to add here to check out that Mac Vim.1637

Or, if you are in Windows, the Windows Vim. Otherwise, that is the end of today's lesson.1647

We have you set up with your tools and your environment, and now we will be digging further into the code.1653

See you next time here at educator.com.1661

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.