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

Ruby Gems

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
01:50
taint
02:08
farm field
02:12
Untrusted Objects
04:06
trust
04:24
untrust
04:34
untrusted?
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

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.
  • Learn at your own pace... anytime, anywhere!

Ruby Gems

Ruby Gems

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
  • RubyGems 0:08
    • What are RubyGems?
  • RubyGems.org 0:44
    • How RubyGems are used
    • Java's jar utility
    • Unix/Linux's tar utility
  • What is a Gem? 3:16
    • Definition of Gem
    • Version
    • Date
    • Author
    • Description
  • What Are the Uses? 4:18
    • Uses for Gems
  • Installation 5:06
    • How to install RubyGems
  • Updating to the Latest Ruby Gems 5:54
  • Testing 6:22
    • Example
  • Installing Rake 7:24
    • Example
  • Verifying 9:22
    • Example
  • Structure 10:56
    • gem.gemspec
  • Specification 13:40
    • What is in the gem?
    • Who made it?
    • Update gem version
    • Example
  • Create Our First Gem 17:20
    • Steps involved
    • RubyGems Guides
    • Example
    • Steps Review
  • Create Our First Gem (Cont.) 23:08
    • Building the gem
    • Example
    • Installing the gem
    • Run it
    • Publish it
  • Get Some Gems! 25:06
    • rake
    • rails
    • fastercsv
    • koala

Transcription: Ruby Gems

Welcome back to educator.com.0000

Today's lesson will be on Ruby Gems.0002

What are Ruby Gems? It's a package utility for Ruby--think of it as--you have different packages, like tar, zip, compressed files--well, the package utility for Ruby...that is what Ruby Gems does.0005

It has the exact same feature for that.0024

Let's go ahead and look at RubyGems.org, so we can see more of what they are, and get a good feel of how it is being used.0026

This is the RubyGems.org site.0039

There are tons of downloads here--865 million.0044

There are a lot of different Gems.0050

You can use these Gems in your projects; you can put them into your project and use them for your own codes, so you're not reinventing the wheel.0051

You're using this code for your own benefit, and you can concentrate on the stuff that matters.0063

There are some links here: there's one that says "Learn"; it will teach you about Ruby Gems by clicking that.0069

There is a share button, and there is "Install RubyGems 1.8.2.4."0078

You can browse the guides--it's explanations, tutorials, references...and Gem specifications.0083

We are going to go over all this stuff; we want to make sure you get used to these RubyGems.0090

This is a very popular thing in Ruby.0095

Here is...to update your Gems...gem update --system...you can build your Gem using gemspec...and you can push your Gem to this website.0098

It does require you signing up for an account, but then you can create your own Gem, and you push it, and it will be out there for everyone to use it.0109

Notice, they also give you a list of what the most-downloaded Gems today were, what was just updated, and some of the newer Gems out there.0116

Before we go any further, make sure, at the top right, you do sign up.0131

Make sure you sign up for the site; then you can keep track of the Gems you've downloaded and the ones you are pushing--uploading.0135

Notice, here are all the "Learn" buttons...we will go through them later, but let's go back to our slide now.0144

Ruby Gems has their own packages for different languages.0161

I put here Java JAR--that is Java's version of Ruby Gems--the JAR function.0168

And UNIX and Linux have the tar utility.0178

These are just a couple of them; the other languages do have their own, also.0182

These are more of the common ones I've seen.0191

So, what is a Gem? Like I said, it's a package--we've already gone over that--and it contains all the necessary files and information to run on this system.0195

In these Gems themselves, they will have version information.0206

It will also have the date it was created.0219

Author is quite common; the description of what the Gem is; and there are more pieces of information, too.0227

What is the use of these Gems?0255

Extend or modify functionality within your Ruby application.0258

Avoid duplication: you don't want to be creating code that someone else has already created; why don't you go with a Ruby Gem...find that piece of code, see if someone has already developed it and just pull that in.0267

You can make their Gem better--be a contributor and help out.0280

Again, stop reinventing the wheel.0284

Fourth, follow Ruby's open source foundation--strong open source foundation--help contribute.0288

Installation: we are going to go over how to actually install Ruby Gems.0303

If you have already looked at our installation lesson, and you have RVM set up, it's already set up; so you can actually skip this and go on to the next lesson.0310

But this is still good information, so if you want, you can look at this, too.0322

Otherwise, you go back to that site that we showed you, download the source--it's going to come as tar/gzip file--uncompress that, go into the directory, and just do ruby setup.rb.0325

That will get you set up with RubyGems.0344

Now, how do you know if you have it installed?0348

First, to update to the latest RubyGems, you just run gem update --system.0352

This gem command will actually be existing on your system after it's installed.0361

So, you could do gem --version, and it will show you the version of it.0366

Here we go: we can run through some of the commands now, too.0371

So, if I do gem -v, it gives me the version, and when I do gem --version, it also comes up; when I do gem in this, I get a lot of usage information about it, too.0395

And this is the RubyGem sophisticated package manager.0410

I see this with gem--and gem help will actually show you the exact same information.0423

And gem --version is just to verify that you installed their correct one.0437

Now, we can have an example of setting up a Gem.0443

One that you should already have it, if you don't already, is the Rake Gem.0448

That's gem install rake.0452

We can go to the site and take a look at that.0457

Right here, in this search box, I'm going to put "rake."0466

It gives me a lot of Gems that have used Rake for their dependencies, and they add features to it, but we just want the main one.0473

I'm going to get the Rake one--Rake 0.9.22.0484

It has the download link, documentations and stats...you can subscribe to follow the Gem and track what progress is being made...0491

It says that the total number of downloads was quite a lot, in the number for this version.0501

You can actually see the Gem following the version.0508

It doesn't really show you anything about how to install it, but it's so easy--it's just gem install rake; it's right there.0515

It's already installed, but we can actually go ahead and try it now; let's see what information it gives us.0526

It should say it has already been set up, but...0532

It's a very simple command--gem install rake--and it will show some information there.0535

While that's running, let's keep going, though.0549

So, verifying the Gems--you can see what Gems are installed with Gem List.0564

We should actually do that; let's take a look at that and make sure it's set up.0572

For this task, look for the Rake and the version number--there's a rake command where we can verify that.0577

Then, just run rake --version.0587

I'm going to quit out of this; it's going kind of slow, but let's check.0595

And there you go--it has already been installed: Rake 0.9.22.0602

Rake --version...there it is...it's already set up; I'll just do rake and see if it gives me some usage information.0607

There you go--if I have my rakefile on here, I can go ahead and run it.0615

That's good...let's see if there's a rake help here...there is a rake help file, too, to show you how it's used.0620

rake...and included the specified, explicit filename with -f.0635

The options are below.0640

The next part is: we want to go over the structure to create your Ruby Gem.0650

It's a very common structure that is used, and it's very standard, so please follow it.0658

If you do add extra common things to it, those will just be additions; so this structure should be followed.0667

First, you also have...whatever Gem you have--the directory that holds everything.0674

It doesn't matter what name you give it.0684

What is really important is this gem.gemspec file, because that is going to be the specifications that everything is set in.0687

First, what happens is all your code is going to go to this Lib directory, which is a subdirectory to Gem.0696

You don't have to specify your file as gem.code; it could be whatever name you give it.0705

As long as your specifications say that file is included, it will include that file.0713

And we are going to go over the specs, so you can take a look at them.0720

Test is for unit testing; it's recommended to use it as you're doing your first one.0724

You're probably still learning it, so...0732

For our uses, we're not going to do any unit tests right now.0739

Readme--very self-explanatory: if I get your Gem, I look at the sourcecode, I want to look at your readme to see how I set it up, a description, installation...any tips or common things I should know.0747

Your rakefile--if there are any tasks that are common that you created to run your Gem--anything I need to load--you can specify in your rakefile.0764

This is also optional.0776

So, this test and this rakefile, and even this readme, these things are all optional, but recommended.0778

And the last one is the gem.gemspec file.0796

Depending on the name you give your Gem, this will change, but whatever name you give it, that should be the name that is placed here and even in your code.0799

OK, to the specifications: What is in the Gem?0819

You can include the name of it, a description of what it is, the version, who made it--include your author information...the developer...0824

And, as you continue to build the specification, you want to continue to update it and update the version for it.0839

Let's go ahead and do that now--let's create our first Gem!--how about that?0848

Let's start with the specifications.0853

I actually want to...get another code base...OK, so we have our structure in a lib directory.0862

The first thing we want to do is create the spec file.0873

gemspec...so the first thing is you want to create your Gem specifications.0878

The first thing I'm going to put is the actual name of this Gem.0897

I'm just going to call it Educator.0900

And then, I'm going to specify the version; for this version, I'm going to start very, very low.0905

Here is the date we are using.0919

Let's just make this like a hello world app--how about that.0937

Authors--for authors you can specify multiple--I'm just going to specify myself, but you can continue to add more to the list.0943

Now, for s.files, this is very important that you include all of your files to this directory.0964

So this one--we're only going to use one file in this.0974

Too big...and the homepage...they will actually give you a place to load your Gems; in this case, it's called Educator.0978

I'm going to show you the path it is being uploaded to, so you can see--you could even download it yourself.0989

OK--we have our Gem specification done.0997

We have more than enough information for it.1000

Really, you need to require the version, author, and the name, because those are needed for the Gem to be generated out.1007

OK, we've saved that; if you look in there, we have our educator.gemspec.1021

Let's go back to the slide now.1029

We have our specification done; next, let's look at the guide to creating our first Gem.1034

Guides.rubygems.org...1044

OK, I have it here.1050

Well, we already know what a Gem is; we want to make our own now.1054

Introduction...our first gem...required files...executables...tests...documenting your code...1063

Even here, you will notice they are fairly simple.1074

There is structure; they have a .gemspec file; the code is in the lib directory.1079

It even says, reading through this file, "Package is placed within the lib directory"; once your Gem is loaded, you just do require, and it will run it.1087

They have their specifications here.1100

When you have created a gemspec, you can build your Gem and install it.1104

Let's go ahead and try it out.1110

I want to actually go in the directory to create it.1121

Let's go back to the slide first...so we know all the tasks for it--that is our next thing; we need to build it.1130

After we implement all the code--this includes developing the code for it--then we can install it, run it, and publish it.1142

Our main thing will be this build step, where we have to create the code.1159

After that, all these are things that are more simple to do.1167

Let's go to work on our first step to build this Gem.1174

Since we are calling it Educator, it's going to actually be called educator.gemspec.1179

Let's get some code for that now.1196

Make sure we're in the right directory...now let's touch educator.rb, class Educator, and we'll have just a very simple hello world.1200

OK, excellent: so we have our code file; we have our .gemspec.1232

Now, let's try to build it.1238

It says no description was specified; but it still built the Gem.1245

Warning...and we didn't include a description, so let's do that.1253

Let's try it again now...excellent: we don't get the warning.1271

Now, we go to the file itself: Educator-0.0.1.gem.1275

The next thing is, we want to actually install this gem now that we've done the build step.1286

So, what this command does: gem install educator-0.0.1; it's going to install this Gem into my RubyGems.1295

I can actually use this Gem in my code.1305

There you go: it's installed--I have my Gem installed, I have some documentation--I didn't actually set up any, but we've gone through the RDoc lesson, so I'll let you guys do that.1310

So, now I can just go to require 'educator'--it says "true"--then I specify the actual code, and there you go: it prints "hello world."1322

We've built it, installed it, and now we can publish it to the world if we wanted to.1332

We went through this step; gem install rubygem-0.0.1--this version will change, depending on what you put in the .gemspec, and this will also change.1352

Again, to run it, since it's already in your Gem directory, you can require it--as simple as that: just putting the name of it in.1371

The next step would be, "Hey, I have this great code piece; I want to publish it to the world! I'm going to help other people use it; I already developed it--why don't I help others and maybe, if I have some feature I would like to have with it, but I don't have time, maybe someone else could work on it, too!"1385

This step is to publish it.1403

To do this, you would sign up on RubyGems.org, and then they have a command to help you publish it.1407

It's back on their site...it's exactly like the slide--you run this curl command, it goes to this URL--you will specify a username when you sign up for your account, and now it's going to ask you for that password that you created with the user.1417

Once you do that, you just run gem push, and it will actually push it to the website, and your Gem will be up.1448

Notice here, you are doing this curl command; change this to your name; and then this URL will stay the same, and you just put in this and the curl with the Gem; you put in your credentials, and you put your password here.1456

Then, all you have to do is just run this gem push, and it will push the Gem to RubyGems.org, and you will see it by the message: it will say, "Successfully registered"--your Ruby Gem is online now.1481

Other than that, I would say just start looking at those Gems and downloading some.1505

We've looked at Rake; another popular one is the Rails Gem; FasterCSV is a Gem you can use to parse CSV files, and it's quite popular, and it does the job really well.1512

Then this one called Koala will allow you to interact with the Facebook API and start using Open Graph.1531

So, that is the lesson today at Educator.com.1542

You just learned RubyGems.1545

Join us again for the next lesson!1548

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.