Bird
Raised Fist0
Rubyprogramming~5 mins

IRB customization in Ruby - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: IRB customization
O(n)
Understanding Time Complexity

When customizing IRB, we often run code that sets up the environment. Understanding how the time to apply these customizations grows helps us keep the setup fast.

We want to know how the time to load and apply custom settings changes as the customization code grows.

Scenario Under Consideration

Analyze the time complexity of this IRB customization snippet.


require 'irb'

IRB.conf[:PROMPT][:MY_PROMPT] = {
  PROMPT_I: '>> ',
  PROMPT_S: '>> ',
  PROMPT_C: '?> ',
  PROMPT_N: '>> ',
  RETURN: '=> %s\n'
}

IRB.conf[:PROMPT_MODE] = :MY_PROMPT

IRB.start
    

This code sets a custom prompt style for IRB and then starts the IRB session with that style.

Identify Repeating Operations

Look for repeated actions that affect time.

  • Primary operation: Assigning prompt settings in a hash and starting IRB.
  • How many times: Each assignment happens once; IRB.start runs the interactive session once.
How Execution Grows With Input

As the number of customization lines grows, the time to apply them grows roughly in a straight line.

Input Size (lines of customization)Approx. Operations
1010 assignments + 1 IRB start
100100 assignments + 1 IRB start
10001000 assignments + 1 IRB start

Pattern observation: The time grows linearly with the number of customization lines.

Final Time Complexity

Time Complexity: O(n)

This means the time to apply customizations grows directly with how many lines of setup code you have.

Common Mistake

[X] Wrong: "Adding more customization lines won't affect startup time much because it's just configuration."

[OK] Correct: Each line runs code that takes time, so more lines mean more time to process before IRB starts.

Interview Connect

Knowing how setup time grows helps you write efficient startup scripts and shows you understand how code size affects performance.

Self-Check

"What if we changed the customization to load settings from a file instead of inline code? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of customizing the ~/.irbrc file in Ruby's IRB?
easy
A. To create new Ruby classes
B. To install new Ruby gems automatically
C. To change how the IRB shell looks and behaves
D. To compile Ruby code faster

Solution

  1. Step 1: Understand the role of ~/.irbrc

    The ~/.irbrc file is used to customize the IRB shell environment.
  2. Step 2: Identify customization effects

    Customizations include changing the prompt, loading libraries, and saving history, which affect how IRB looks and works.
  3. Final Answer:

    To change how the IRB shell looks and behaves -> Option C
  4. Quick Check:

    IRB customization = change shell behavior [OK]
Hint: Remember ~/.irbrc customizes IRB shell behavior [OK]
Common Mistakes:
  • Thinking it installs gems automatically
  • Confusing with Ruby code compilation
  • Assuming it creates Ruby classes
2. Which of the following is the correct way to load the 'date' library automatically when IRB starts by editing ~/.irbrc?
easy
A. require 'date'
B. load 'date'
C. import 'date'
D. include 'date'

Solution

  1. Step 1: Recall Ruby syntax for loading libraries

    Ruby uses require 'library_name' to load external libraries.
  2. Step 2: Check each option

    require 'date' is correct; load expects a file path, import and include are incorrect here.
  3. Final Answer:

    require 'date' -> Option A
  4. Quick Check:

    Load library = require 'library' [OK]
Hint: Use require to load libraries in ~/.irbrc [OK]
Common Mistakes:
  • Using import which is not Ruby syntax
  • Using include which mixes modules, not load libs
  • Using load without full file path
3. Given this ~/.irbrc snippet:
IRB.conf[:PROMPT_MODE] = :SIMPLE
IRB.conf[:SAVE_HISTORY] = 1000

What effect does this have when you start IRB?
medium
A. Disables command history and uses default prompt
B. Changes prompt color but does not save history
C. Causes a syntax error and IRB won't start
D. Sets a simple prompt and saves last 1000 commands in history

Solution

  1. Step 1: Understand IRB.conf[:PROMPT_MODE]

    Setting :PROMPT_MODE to :SIMPLE changes IRB prompt to a simple style.
  2. Step 2: Understand IRB.conf[:SAVE_HISTORY]

    Setting :SAVE_HISTORY to 1000 means IRB saves the last 1000 commands in history.
  3. Final Answer:

    Sets a simple prompt and saves last 1000 commands in history -> Option D
  4. Quick Check:

    Prompt = simple, History saved = 1000 [OK]
Hint: Look for keys in IRB.conf to know prompt and history settings [OK]
Common Mistakes:
  • Thinking it disables history
  • Assuming syntax error from valid config
  • Confusing prompt style with color only
4. You wrote this in your ~/.irbrc file:
IRB.conf[:SAVE_HISTORY] = '1000'

But IRB does not save history as expected. What is the problem?
medium
A. The key :SAVE_HISTORY is invalid
B. The value should be an integer, not a string
C. IRB does not support saving history
D. You must restart the computer for changes to apply

Solution

  1. Step 1: Check the data type of the value

    :SAVE_HISTORY expects an integer number, not a string.
  2. Step 2: Identify the error cause

    Using a string like '1000' causes IRB to ignore the setting, so history is not saved.
  3. Final Answer:

    The value should be an integer, not a string -> Option B
  4. Quick Check:

    Integer value needed for history count [OK]
Hint: Use numbers, not strings, for numeric IRB config values [OK]
Common Mistakes:
  • Using quotes around numbers
  • Thinking IRB can't save history
  • Believing a full restart is needed
5. You want to customize IRB so that it automatically requires the 'json' library, sets a custom prompt showing the current time, and saves 500 commands in history. Which ~/.irbrc snippet correctly does this?
hard
A. require 'json' IRB.conf[:PROMPT][:CUSTOM] = { PROMPT_I: "[#{Time.now.strftime('%H:%M:%S')}] > " } IRB.conf[:PROMPT_MODE] = :CUSTOM IRB.conf[:SAVE_HISTORY] = 500
B. require 'json' IRB.conf[:PROMPT_MODE] = :SIMPLE IRB.conf[:SAVE_HISTORY] = '500'
C. load 'json' IRB.conf[:PROMPT_MODE] = :DEFAULT IRB.conf[:SAVE_HISTORY] = 500
D. require 'json' IRB.conf[:PROMPT_MODE] = :CUSTOM IRB.conf[:SAVE_HISTORY] = 1000

Solution

  1. Step 1: Load the 'json' library correctly

    Use require 'json' to load the library automatically.
  2. Step 2: Define a custom prompt with current time

    Set IRB.conf[:PROMPT][:CUSTOM] with a prompt string showing current time using Ruby's Time.now.strftime.
  3. Step 3: Set prompt mode and save history

    Assign IRB.conf[:PROMPT_MODE] = :CUSTOM to use the custom prompt and set IRB.conf[:SAVE_HISTORY] = 500 as an integer to save 500 commands.
  4. Final Answer:

    require 'json', custom prompt with current time, :CUSTOM mode, SAVE_HISTORY = 500 -> Option A
  5. Quick Check:

    Require json, custom prompt with time, save 500 history [OK]
Hint: Combine require, custom prompt hash, and integer history save [OK]
Common Mistakes:
  • Using string instead of integer for history
  • Not defining custom prompt hash properly
  • Using load instead of require for libraries
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