Bird
Raised Fist0
Rubyprogramming~20 mins

Module declaration syntax in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Module Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of module method call
What is the output of this Ruby code?
Ruby
module Greetings
  def self.say_hello
    "Hello from module!"
  end
end

puts Greetings.say_hello
AHello from module!
BSyntaxError
CNoMethodError
Dnil
Attempts:
2 left
💡 Hint
Look at how the method is defined with self inside the module.
❓ Predict Output
intermediate
2:00remaining
Output of including a module
What will be printed when this Ruby code runs?
Ruby
module Talk
  def speak
    "I can talk"
  end
end

class Person
  include Talk
end

puts Person.new.speak
ASyntaxError
BNoMethodError
CI can talk
Dnil
Attempts:
2 left
💡 Hint
Including a module adds its methods as instance methods.
❓ Predict Output
advanced
2:00remaining
Output of nested module constants
What is the output of this Ruby code?
Ruby
module Outer
  VALUE = 10
  module Inner
    VALUE = 20
    def self.value
      VALUE
    end
  end
end

puts Outer::Inner.value
Anil
B20
CNameError
D10
Attempts:
2 left
💡 Hint
Constants inside nested modules are accessed by their own scope.
❓ Predict Output
advanced
2:00remaining
Error raised by invalid module syntax
What error does this Ruby code raise?
Ruby
module Sample
  def method
    puts "Hello"
  # missing end here
ASyntaxError
BRuntimeError
CNameError
DNoMethodError
Attempts:
2 left
💡 Hint
Check if all blocks and modules are properly closed.
🧠 Conceptual
expert
2:00remaining
Number of methods available after module inclusion
Given this Ruby code, how many methods can be called on an instance of class C?
Ruby
module M1
  def a; 1; end
end

module M2
  def b; 2; end
end

class C
  include M1
  include M2
  def c; 3; end
end

obj = C.new
A0
B2
C1
D3
Attempts:
2 left
💡 Hint
Including modules adds their instance methods to the class.

Practice

(1/5)
1. What is the correct way to declare a module named MathTools in Ruby?
easy
A. def MathTools # code here end
B. module MathTools # code here end
C. class MathTools # code here end
D. package MathTools { # code here }

Solution

  1. Step 1: Recognize Ruby module syntax

    In Ruby, modules are declared using the keyword module followed by the module name and end.
  2. Step 2: Identify the correct declaration

    module MathTools # code here end uses module MathTools ... end, which is the correct syntax for a module.
  3. Final Answer:

    module MathTools # code here end -> Option B
  4. Quick Check:

    Ruby modules use module Name ... end [OK]
Hint: Modules start with 'module' and end with 'end' [OK]
Common Mistakes:
  • Using 'class' instead of 'module'
  • Using 'def' which is for methods
  • Using non-Ruby syntax like 'package'
2. Which of the following is a syntax error when declaring a module in Ruby?
easy
A. module Tools { def help end }
B. module Tools def self.help end end
C. module Tools end
D. module Tools CONSTANT = 10 end

Solution

  1. Step 1: Check Ruby module block delimiters

    Ruby modules use module ... end without braces { }.
  2. Step 2: Identify invalid syntax

    module Tools { def help end } uses braces { } which is invalid syntax for module declaration in Ruby.
  3. Final Answer:

    module Tools { def help end } -> Option A
  4. Quick Check:

    Ruby modules use 'module ... end', not braces [OK]
Hint: Ruby modules never use curly braces for blocks [OK]
Common Mistakes:
  • Using curly braces instead of 'end'
  • Missing 'end' keyword
  • Confusing module with class syntax
3. What will be the output of the following Ruby code?
module Greetings
  def self.say_hello
    "Hello!"
  end
end

puts Greetings.say_hello
medium
A. Hello!
B. Greetings.say_hello
C. NoMethodError
D. SyntaxError

Solution

  1. Step 1: Understand module method definition

    The method say_hello is defined as a module method using self., so it can be called on the module directly.
  2. Step 2: Evaluate the method call output

    Calling Greetings.say_hello returns the string "Hello!", which is printed by puts.
  3. Final Answer:

    Hello! -> Option A
  4. Quick Check:

    Module method call returns string output [OK]
Hint: Module methods use self. and can be called directly [OK]
Common Mistakes:
  • Trying to call method without self. prefix
  • Expecting instance method behavior
  • Confusing syntax errors with method calls
4. Identify the error in the following Ruby module declaration:
module Tools
  def help
    "Help message"
  end
end

Tools.help
medium
A. No error, code runs fine
B. Missing 'end' keyword for module
C. Method 'help' should be defined with 'self.' to call on module
D. Module name should be lowercase

Solution

  1. Step 1: Check method definition inside module

    The method help is defined as an instance method, but called on the module directly.
  2. Step 2: Understand method call context

    To call Tools.help, help must be a module method defined with self.help.
  3. Final Answer:

    Method 'help' should be defined with 'self.' to call on module -> Option C
  4. Quick Check:

    Module methods need 'self.' prefix to be called on module [OK]
Hint: Use 'def self.method' for module-level methods [OK]
Common Mistakes:
  • Defining instance methods but calling on module
  • Forgetting 'self.' prefix for module methods
  • Assuming lowercase module names are valid
5. Given the following nested module declarations, which is the correct way to define a module Inner inside module Outer in Ruby?
module Outer
  # Your code here
end
hard
A. module Outer class Inner end end
B. module Outer::Inner end
C. module Outer.Inner end
D. module Outer module Inner end end

Solution

  1. Step 1: Understand nested module syntax

    In Ruby, nested modules can be declared by placing one module inside another.
  2. Step 2: Identify correct nested declaration

    module Outer module Inner end end correctly nests module Inner inside module Outer using indentation and end keywords.
  3. Final Answer:

    module Outer module Inner end end -> Option D
  4. Quick Check:

    Nested modules use nested 'module ... end' blocks [OK]
Hint: Nest modules by placing one inside another with 'module' [OK]
Common Mistakes:
  • Using dot notation instead of :: for nested modules
  • Using class instead of module for nested module
  • Incorrect syntax like dot (.) in module names
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard