Enter your Sign on user name and password.

Forgot password?
Sign In | Subscribe
Start learning today, and be successful in your academic & professional career. Start Today!

Use Chrome browser to play professor video
Justin Mui

Justin Mui

Intro to Ruby

Slide Duration:

Table of Contents

I. 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
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Lecture Comments (2)

1 answer

Last reply by: Professor Mui
Sun Nov 29, 2015 4:22 AM

Post by sam benites on November 28, 2015

Any one here?

Intro to Ruby

Intro to 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
  • What is Ruby? 0:06
    • What is Ruby?
    • Ruby Standard Library
  • Who Created Ruby? 1:22
    • Yukihiro Matsumoto
  • History 2:45
    • The Name 'Ruby'
    • Ruby v0.95
    • Ruby v1.0
    • English Language Mailing List Rubytalk
    • ruby-forum.com & the Mailing Lists
    • Ruby In The West
    • Ruby on Rails
    • The Pragmatic Programmer's Guide to Ruby
    • rubyonrails.org
  • Current Ruby 14:42
    • Ruby 1.8.7, Ruby 1.9.3, and Ruby 2.0
  • Why Programmers Enjoy Ruby? 15:40
    • Why Programmers Enjoy Ruby?
  • Ruby Is An Interpreted Language 16:21
    • Ruby Is An Interpreted Language
  • What Is It Used For? 16:50
    • What Is It Used For?
  • Ruby is Object-Oriented 18:17
    • Example: 5.class
    • Example: 0.0.class
    • Example: true.class
    • Example: nil.class
  • Object Class 19:19
    • BasicObject
    • Example
    • Superclass
    • Fixnum → Integer → Numeric → Object

Transcription: Intro to Ruby

Welcome to educator.com. Today's lesson is Intro to Ruby.0000

So, this is the first lesson, and this will be a very general overview. What is Ruby?0010

It's a dynamic programming language.0017

It's very expressive, and it's complex, but it's very simplified for all the things it can do.0025

As we go through many of the other lessons, you'll see why it's called complex.0032

But all these different functionalites built in it make it really easy--many different types of apps and features that you're making your application in.0040

Ruby does come with a core class library, and it has a very rich, powerful API.0052

It's also called the Ruby standard library.0061

So who created Ruby? It was a guy named Yukihiro Matsumoto.0083

He's better known as "Matz."0090

Before he used Ruby, he actually developed multiple other languages, but he was never satisfied with any of them.0094

When he created it, his philosophy for Ruby was that he wanted to design a language to make programmers happy.0106

That's a nice thing to have, I believe.0114

What he wanted to do was...he actually said that he wanted a scripting language that was more powerful than Perl, more object-oriented than Python--and that's why he decided to design his own language.0120

So, he's used in the past: Perl, C, Java... but he's never satisfied.0134

He has influences using Smalltalk list and Python. So he has a lot of influences, multiple influences for many languages.0146

So it's nice to know that the guy that's influencing it...made this really good language.0155

Let's talk about the history of Ruby.0163

The name itself, Ruby, was established on February 24th, 1993, in a chat session, actually.0170

He had a chat with one of his cohorts, and they're discussing, "Maybe we should make a language!" and "What should it do?"0182

So, after they established a name and got the ball rolling, they actually released version 0.9.5 on December 1st, 1995.0190

At that time, in development, it was a very basic language.0203

They were still in progress, doing object-pointed design, adding classes with inheritance, mixins, iterators...0210

and remember, all these things that I'm saying, we will go over in further courses.0222

...closures, exception handling, and garbage collection.0227

About a year later, on December 25th, 1996, he actually released Ruby 1.0.0233

It was popular in Japan, but in the U.S., there had not been much influence of Ruby.0246

"What was it?" But it just so happened that, in 1999, a mailing list was created.0255

It was an English mailing list called ruby-talk that was established.0263

Right now, you can actually see that mailing list: it's mirrored at ruby-forum.com.0267

This domain actually mirrors the ruby-talk mailing list...so it's nice.0277

What I'd like to do is...let's open a browser and take a look at that website.0287

Let's go to ruby-forum and check it out.0299

First--you will notice I'm already in the Ruby Forum, but--I wanted to show you the actual main site.0302

As you go to ruby-forum.com, you will notice that it actually has quite a list of topics there.0311

The main one you will be using is just the first one, with "Ruby."0320

But you will notice that there are a ton of other forums here.0326

You will see, right below it..."Ruby on Rails" is a very popular framework.0330

It is used for web development, and that is the second forum.0335

The third one is Rails internationalization mailing list.0341

You will notice, if you go down this list, that a lot of them are all based on Rails.0349

So you have Rails deployment, Rails Engines, Rails Spinoffs...0353

...Rails France...and there are a lot of different forums, mailing lists--this is just a hodgepodge on this site.0362

Another popular one is one called Radiant CMS. That is kind of like a Wordpress for Ruby.0371

It's all built in Ruby, and it's a pretty clean CMS--very simple.0376

And you notice, if you go down here, another important one: Ruby-core.0384

You can see what the core team is doing and what they're discussing,0388

and what they're going to do with the Ruby language.0395

Plus, if you go down even further, you will see there are actually different frameworks of Ruby.0400

There is JRuby--some integration thing to integrate it with Java.0407

IronRuby--you can use Ruby to implement a .net application.0411

And then they also have some back-end processes, like Mongrel and NGINX, to do back-end handling for web services.0418

They are not just used for Ruby, but those are used for other languages, too.0431

And there are other things there. You could sign up.0435

There is a "user" and a "register" link..."log in"..."sign up"..."show forum post"...0443

But let's just go ahead and click "Ruby" here.0451

You will notice that it lists the posts from newest to oldest.0453

You can see a lot of different topics here that are very...from the most recent to the oldest, but...0463

...if you have any questions in Ruby, a lot of them are already answered.0477

If you look at this list, you might have a question that you want to post, but maybe the best thing is to do a search to see what is over there.0481

Let's say I'm going to look up something with Ruby strings.0490

I can just do the "search subject" here, and you will notice it will give me all the posts from the latest one to the oldest one.0493

And I'm like, "Oh, what is this ruby_parser 3.0.1?" so I want to check it out.0503

So I can click on it and dive into it: it will tell me who posted it and give some examples of the code and some changes, bugs, examples from that.0508

I recommend you check that out, and you can log in and register to sign up for the Ruby Forum.0520

Next, I will also--I know this mirrors that mailing list for ruby-talk--0527

But also, you can go to ruby-lang.org,0537

and they have a mailing list URL. You can sign up, too.0542

So let's say you just want to get it straight to your email box.0547

You can actually subscribe here. You notice they have ruby-talk;0551

they have Ruby-Core--that mailing list deals with the core and implementation talks about Ruby.0557

Usually there are patches there. Ruby-Doc, Ruby-CVS...you can subscribe.0565

You can choose Ruby-Talk here, enter your name, your email address, subscribe, and click "Submit Form."0572

And it will add you to the mailing list.0578

So that is the Ruby-Talk mailing list forum. Let's continue on.0584

Like I just said, Ruby was built in Japan.0593

It got very popular there. It started getting popular in the West around 2000.0602

The first English book that was published was one called Programming Ruby.0607

With that, they translated a lot of things that were in Japanese, and made it so we can see that syntax in English and get a sense of how we can utilize it in our own programming...and see the flexibility and the expressions and the richness of it.0613

And then, what really got it going was in 2005.0635

The interest skyrocketed with Ruby on Rails.0639

This Ruby on Rails is a web framework.0643

It makes it very easy to get a website up and going.0649

They give you a lot of cool tricks and key things, like MVC-- that is a model-view-controller to separate and organize your code.0657

It's really made to be an all-in-one package for everything to build a website.0669

The creator of that is David Heinemeier Hansson, better known as DHH.0679

After that, Ruby really took off.0686

So, let's go ahead and take a look at some of these materials.0690

Definitely this Programming Ruby book, you probably want to use that as a reference even when you are doing your own Ruby development.0696

Let's go back here in the browser; what I'm bringing up is that URL...0701

This is the Programming Ruby book on the Internet.0709

And if you go here, the first two things, just like a normal book--0712

they have a frame here on the left, and he will give you a foreword of why he created this book and some references he used to create it.0722

And there you go--Yukihiro Matsumoto.0731

He wants Ruby to serve you, to make your programming easy, enjoyable, and have fun!0734

Don't you love that? It's great. So let's go ahead and move deeper in here.0741

You notice they have a preface; you can go ahead and read about this.0747

They give you a lot of introduction--more about Ruby and why it was created0755

and why you should learn it.0763

"What kind of language is Ruby?" You can go ahead and read it...there are a lot of things. "Is Ruby for you?"0766

Read it, check it out...and why they wrote this book.0773

The instructions for installation are pretty old, so we do have a lesson to set up your Ruby environment0777

that I'll go over, that should be a lot more up-to-date.0788

I don't even know if that FTP link works.0792

Go ahead and try it out. They still use CBS.0797

So...it starts with building Ruby, running Ruby, IRB... and we'll go through those in our own lesson.0804

So you won't be missing out.0810

The other thing is...talking about Ruby on Rails very quickly...rubyonrails.org.0815

This is an open source web framework, all built in Ruby.0821

The Rails framework makes your websites very easy.0827

If you go here, you can see a lot of information about it.0831

It tells you about some sites that are using it; it tells you some information of who created it, and who is developing it right now.0835

They also have this link that says "Screencasts and Presentations."0849

If you click on that, you can see videos to get started on the Rails framework,0852

which is very nice. There is a lot of information there.0857

Basically, if you have a good foundation in Ruby, it will make learning these frameworks a ton easier.0863

That is what I hope we can do in this course for you.0876

Currently, Ruby is 1.9.3.0883

That is considered stable right now.0892

1.8.7 is the latest one in the 1.8 world.0897

You might see that on your laptops, if you are in Mac OS and you have one of the latest operating systems-- it might default to the 1.8.7.0902

We're going to be using 1.9.3 for these lessons, and you will use a lot of the new objects and things in it to get your environment running.0914

Ruby 2.0 is in development, and there iss a plan to release in 2013.0928

It will be quite exciting, seeing what they get done there.0934

So why do programmers enjoy using Ruby?0940

It's portable. It's lightweight.0946

It's easy to learn, and a lot of people say it's a real pleasure to program.0952

There aren't any weird symbols in it. It's very friendly; it reads like a book.0958

And it's flexible. You'll see it used for many different types of programming methodologies.0963

...and used for many different types of applications, not just websites or web apps.0969

Ruby lets you decide how you want to do things.0975

Ruby is an interpreted language, but it is also a scripting language.0980

You will see a lot of key concepts in procedural programming built in.0990

Functional programming...a lot of key concepts there, too. So there are many different styles you could use it for.0997

But, really, Ruby is more of a general-purpose programming language with a system that you can use for many different things.1002

So, where can you see it being used? What is it being used for?1009

You will see it in graphical user interface applications.1017

If you are ever looking at a website, it might be being used for some middle-tier server process.1021

That is something behind the scenes, after the front end...some process getting sent to do some transaction for an ecommerce site...or doing some search.1028

It is also used for managing server machines and databases.1040

...Rails--serving webpages using Ruby on Rails...1047

You are definitely using it to serve your webpages.1054

And generating dynamic content, again...doing metaprogramming and serving up different content on the Web.1061

You can do that with Ruby. Writing AI and machine language programming--Ruby is able to do that, too.1071

You will also see frameworks to go to games using Ruby.1079

Plus you have mobile development: you have frameworks that allow you to create iOS apps, and you can also make mobile websites using Ruby...so, mobile development, as well.1083

Ruby is object-oriented.1097

Every value is an object.1104

If you look right here, you will notice that even if I have a number, that number itself is an object.1109

Where else in code can you see a number called .class?1123

When I do that, it's going to tell me what object it is. So it says this object, 5, is a Fixnum object.1127

If I call 0.0...it doesn't end it; that is still an object. I can call it .class, and it will tell me that it's a Float.1134

And even Boolean statements have true or false: there is a class for that.1144

So we call up true.class. You get TrueClass.1149

And even nil is an object itself--so, nil.class--you will get NilClass.1152

So, you see, everything in Ruby is an object.1158

Every object has an underlying object that is a parent, except this class called the Basic Object.1166

The parent of all objects is this one that's called "Basic Object."1176

But the child of that is "Object."1184

And, when you see all of these other ones--Fixnum, Integer, Numeric--they all inherit from Object.1191

So you often see this Fixnum, Integer, Numeric...that is its parent.1198

Or, I should say, its ancestor--you'll see it ahead of it.1206

So going back, this Object class we were talking about...1209

it's a method that is accessible to all the different classes.1219

And it's the parent of all classes, except that Basic Object. Basic Object is the top.1222

If you ask the code, "What's the parent of this object?" it's going to be null, because there is nothing above that.1228

So, we go back and look at these classes.1234

If I just call up 5.class, I get Fixnum.1240

But I can ask Ruby, "Who is the parent of this class?"1244

And the parent of the class is called the superclass.1249

When I say, "Where is the superclass," what I really want to say is, "Who is the parent?"1253

And so I do Fixnum.superclass, and it will give me Integer.1265

Integer.superclass--it will say it's a Numeric, and Numeric.superclass is Object.1277

Notice how we started with the Fixnum from the number 5, and we kept going up the ranks, all the way to Object.1282

At the end, we found out that Object is the parent, and all these different classes inherit from it--1292

Numeric, Integer, and Fixnum.1306

Basically, that is what I want you to know.1314

Everything is an object, and all of them lead to Object at the end result.1320

Well, that is the end of this lesson. I hope you enjoyed it and look at our next lessons so we can get deeper into the Ruby code and setting up your system to use it.1327

Educator®

Please sign in for full access to this lesson.

Sign-InORCreate Account

Enter your Sign-on user name and password.

Forgot password?

Start Learning Now

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

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • 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 lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.

Use this form or mail us to .

For support articles click here.