Bird
Raised Fist0
Rubyprogramming~20 mins

Dir operations for directories in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Dir Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Ruby code using Dir.entries?
Consider the following Ruby code snippet that lists entries in the current directory. What will it output?
Ruby
puts Dir.entries(".").sort
AOnly files in the current directory sorted alphabetically
BOnly directories in the current directory sorted alphabetically
CAn array of all files and directories excluding '.' and '..' sorted alphabetically
DAn array of all files and directories including '.' and '..' sorted alphabetically
Attempts:
2 left
💡 Hint
Dir.entries returns all entries including special ones '.' and '..'.
❓ Predict Output
intermediate
2:00remaining
What does Dir.glob("*.rb") return?
Given a directory with files: test.rb, example.py, script.rb, and README.md, what will Dir.glob("*.rb") return?
Ruby
p Dir.glob("*.rb")
A["test.rb", "script.rb"]
B["test.rb", "example.py", "script.rb"]
C["README.md"]
DAn empty array []
Attempts:
2 left
💡 Hint
Dir.glob with '*.rb' matches files ending with .rb only.
🔧 Debug
advanced
2:00remaining
Why does this code raise an error?
This Ruby code tries to change directory and list files but raises an error. Identify the cause.
Ruby
Dir.chdir("nonexistent_dir")
puts Dir.entries(".")
AIt raises Errno::ENOENT because the directory 'nonexistent_dir' does not exist
BIt raises TypeError because Dir.chdir expects a block
CIt raises NoMethodError because Dir.entries is called incorrectly
DIt raises ArgumentError because Dir.chdir requires absolute path
Attempts:
2 left
💡 Hint
Check if the directory exists before changing into it.
📝 Syntax
advanced
2:00remaining
Which option correctly creates a new directory named 'data'?
Select the Ruby code that correctly creates a directory named 'data' in the current working directory.
ADir.make('data')
BDir.mkdir('data')
CDir.create('data')
DDir.new('data')
Attempts:
2 left
💡 Hint
The method to create a directory is mkdir.
🚀 Application
expert
2:00remaining
How many entries will this code print?
Given a directory containing 3 files and 2 subdirectories (excluding '.' and '..'), what will this Ruby code print?
Ruby
entries = Dir.entries(".") - ['.', '..']
puts entries.size
A7
B3
C5
D2
Attempts:
2 left
💡 Hint
Dir.entries includes '.' and '..', which are removed here.

Practice

(1/5)
1. Which Ruby method lists all files and folders inside a directory including . and ..?
easy
A. Dir.chdir
B. Dir.mkdir
C. Dir.exist?
D. Dir.entries

Solution

  1. Step 1: Understand the purpose of Dir.entries

    This method returns an array of all entries in the directory, including special entries . and ...
  2. Step 2: Compare with other methods

    Dir.mkdir creates a directory, Dir.exist? checks if a directory exists, and Dir.chdir changes the current directory. None of these list contents.
  3. Final Answer:

    Dir.entries -> Option D
  4. Quick Check:

    List directory contents = Dir.entries [OK]
Hint: Use Dir.entries to list all files and folders [OK]
Common Mistakes:
  • Confusing Dir.entries with Dir.mkdir
  • Using Dir.exist? to list files
  • Thinking Dir.chdir lists directory contents
2. Which of the following is the correct syntax to create a new directory named test_folder in Ruby?
easy
A. Dir.mkdir('test_folder')
B. Dir.create('test_folder')
C. Dir.make('test_folder')
D. Dir.new('test_folder')

Solution

  1. Step 1: Recall the method to create directories

    The correct Ruby method to create a directory is Dir.mkdir.
  2. Step 2: Check syntax correctness

    Dir.mkdir('test_folder') correctly creates a directory named 'test_folder'. Other options are invalid methods.
  3. Final Answer:

    Dir.mkdir('test_folder') -> Option A
  4. Quick Check:

    Create directory = Dir.mkdir [OK]
Hint: Use Dir.mkdir('folder_name') to create directories [OK]
Common Mistakes:
  • Using Dir.create instead of Dir.mkdir
  • Trying Dir.new for directory creation
  • Misspelling method names
3. What will be the output of the following Ruby code?
Dir.mkdir('sample_dir') unless Dir.exist?('sample_dir')
entries = Dir.entries('sample_dir')
puts entries.inspect
medium
A. []
B. ["sample_dir"]
C. [".", ".."]
D. Error: Directory not found

Solution

  1. Step 1: Check directory creation and existence

    The code creates 'sample_dir' if it does not exist, so the directory will exist before listing entries.
  2. Step 2: Understand Dir.entries output for empty directory

    An empty directory still contains special entries: . (current directory) and .. (parent directory). So, Dir.entries returns [".", ".."].
  3. Final Answer:

    [".", ".."] -> Option C
  4. Quick Check:

    Empty directory entries = [".", ".."] [OK]
Hint: Empty dirs always show '.' and '..' in Dir.entries [OK]
Common Mistakes:
  • Expecting empty array for empty directory
  • Thinking directory name appears in entries
  • Assuming error if directory just created
4. Identify the error in this Ruby code snippet that tries to remove a directory:
Dir.rmdir('my_folder')
puts 'Folder removed'
medium
A. Dir.rmdir only removes non-empty directories
B. Dir.rmdir requires the directory to be empty before removal
C. Dir.rmdir should be Dir.remove
D. Dir.rmdir needs a block to execute

Solution

  1. Step 1: Understand Dir.rmdir behavior

    Dir.rmdir removes only empty directories. If 'my_folder' contains files or folders, it will raise an error.
  2. Step 2: Check other options for correctness

    Dir.rmdir only removes non-empty directories is wrong because it says the opposite. Dir.rmdir should be Dir.remove is invalid method name. Dir.rmdir needs a block to execute is incorrect; no block needed.
  3. Final Answer:

    Dir.rmdir requires the directory to be empty before removal -> Option B
  4. Quick Check:

    Dir.rmdir removes empty dirs only [OK]
Hint: Dir.rmdir only deletes empty directories [OK]
Common Mistakes:
  • Trying to remove non-empty directories with Dir.rmdir
  • Using wrong method name like Dir.remove
  • Expecting Dir.rmdir to accept a block
5. You want to change the current working directory to projects, create a new folder new_app inside it, and then list the contents of projects. Which sequence of Ruby commands correctly does this?
hard
A. Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.')
B. Dir.mkdir('new_app') Dir.chdir('projects') puts Dir.entries('new_app')
C. Dir.entries('projects') Dir.mkdir('new_app') Dir.chdir('new_app')
D. Dir.chdir('new_app') Dir.mkdir('projects') puts Dir.entries('.')

Solution

  1. Step 1: Change directory to 'projects'

    Using Dir.chdir('projects') sets the current directory to 'projects'.
  2. Step 2: Create 'new_app' inside 'projects'

    Dir.mkdir('new_app') creates the new folder inside the current directory.
  3. Step 3: List contents of current directory

    Dir.entries('.') lists all files and folders inside 'projects', including 'new_app'.
  4. Final Answer:

    Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.') -> Option A
  5. Quick Check:

    Change dir, create folder, list contents = Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.') [OK]
Hint: Change dir first, then create folder, then list with Dir.entries('.') [OK]
Common Mistakes:
  • Creating folder before changing directory
  • Listing wrong directory contents
  • Changing to new folder before creating it
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