📖 Scenario: Imagine you are working with a list of book titles in a library system. You want to process these titles by cleaning up the text and then selecting only the titles that meet certain conditions.
🎯 Goal: You will build a Ruby program that uses method chaining to clean and filter a list of book titles step-by-step.
📋 What You'll Learn
Create an array of book titles with exact values
Create a variable for the minimum length of titles to keep
Use method chaining to clean and filter the titles
Print the final filtered list of titles
💡 Why This Matters
🌍 Real World
Cleaning and filtering lists of text data is common in apps like library catalogs, contact lists, or product inventories.
💼 Career
Understanding method chaining helps you write clean, readable code for data processing tasks in Ruby development jobs.
Progress0 / 4 steps
1
Create the initial array of book titles
Create an array called book_titles with these exact strings: " The Hobbit ", "War and Peace", "1984", " Brave New World ", and "Ulysses".
Ruby
Hint
Use square brackets [] to create an array and include the exact strings with quotes.
2
Set the minimum title length
Create a variable called min_length and set it to 10.
Ruby
Hint
Just assign the number 10 to the variable min_length.
3
Use method chaining to clean and filter titles
Create a new variable called filtered_titles that uses method chaining on book_titles to first remove extra spaces from each title using map(&:strip), then select only titles with length greater than or equal to min_length using select.
Ruby
Hint
Use map(&:strip) to remove spaces, then select with a block to keep titles with length >= min_length.
4
Print the filtered titles
Write a puts statement to print the filtered_titles array.
Ruby
Hint
Use puts filtered_titles to print each title on its own line.
Practice
(1/5)
1. What is the main purpose of method chaining in Ruby?
easy
A. To call multiple methods on the same object in one line
B. To create new objects automatically
C. To run methods in parallel threads
D. To convert objects into strings
Solution
Step 1: Understand method chaining concept
Method chaining allows calling several methods one after another on the same object without repeating the object name.
Step 2: Identify the main purpose
The main goal is to write shorter, cleaner code by linking method calls in one line.
Final Answer:
To call multiple methods on the same object in one line -> Option A
Quick Check:
Method chaining = calling multiple methods on one object [OK]
Hint: Method chaining links calls on one object in one line [OK]
Common Mistakes:
Thinking it creates new objects automatically
Confusing with threading or parallel execution
Believing it converts objects to strings
2. Which of the following is the correct syntax for method chaining in Ruby?
easy
A. object|method1|method2|method3
B. object.method1.method2.method3
C. object::method1::method2::method3
D. object->method1->method2->method3
Solution
Step 1: Recall Ruby method call syntax
In Ruby, methods are called on objects using dot notation: object.method.
Step 2: Identify chaining syntax
Method chaining uses multiple dots to call methods one after another on the same object.
Final Answer:
object.method1.method2.method3 -> Option B
Quick Check:
Ruby chaining uses dots between methods [OK]
Hint: Use dots (.) to chain methods in Ruby [OK]
Common Mistakes:
Using arrows (->) which is not Ruby syntax
Using double colons (::) which are for constants or modules
Using pipes (|) which are not method call operators
3. What will be the output of the following Ruby code?
class Box
def initialize(value)
@value = value
end
def add(x)
@value += x
self
end
def multiply(x)
@value *= x
self
end
def value
@value
end
end
box = Box.new(2)
result = box.add(3).multiply(4).value
puts result
Hint: Follow each method step-by-step, remember self returns object [OK]
Common Mistakes:
Forgetting that add and multiply return self
Calculating operations in wrong order
Returning intermediate values instead of final
4. Identify the error in the following Ruby code that tries to chain methods:
class Person
def initialize(name)
@name = name
end
def greet
puts "Hello, #{@name}!"
end
def farewell
puts "Goodbye, #{@name}!"
end
end
p = Person.new("Sam")
p.greet.farewell
medium
A. initialize method missing return statement
B. farewell method is misspelled
C. Cannot create Person object with new
D. greet method does not return self, so chaining fails
Solution
Step 1: Check method return values
greet prints a message but returns nil (default for puts).
Step 2: Understand chaining requirement
For chaining, greet must return self to allow calling farewell next.
Final Answer:
greet method does not return self, so chaining fails -> Option D
Quick Check:
Method chaining needs methods to return self [OK]
Hint: Ensure methods return self to chain calls [OK]
Common Mistakes:
Assuming puts returns self
Thinking initialize needs explicit return
Believing object creation is the problem
5. You want to create a Ruby class TextFormatter that allows chaining methods to transform a string. The methods are: - upcase: converts text to uppercase - reverse: reverses the text - append(str): adds str to the end
Which implementation correctly supports chaining all these methods and returns the final string with result?
hard
A. Each method prints the modified string and returns nil
B. Each method returns the modified string directly without returning self
C. Each method modifies @text, returns self; add a result method returning @text
D. Each method returns a new TextFormatter object with modified text
Solution
Step 1: Understand chaining requirements
To chain methods, each must return self (the object) so next method can be called.
Step 2: Provide final output method
Since methods return self, a separate method (like result) should return the final string.
Final Answer:
Each method modifies @text, returns self; add a result method returning @text -> Option C
Quick Check:
Return self to chain, separate method to get final string [OK]
Hint: Return self in methods, separate method returns final value [OK]
Common Mistakes:
Returning strings breaks chaining
Printing inside methods returns nil
Returning new objects breaks original chain
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.