Ruby Style and Project Organization
Project Layout
A small Ruby project is easier to navigate when files have clear roles.
Project Layout
project_layout.rb
files =
source_files = files.select { |path| path.start_with?("lib/") }
test_files = files.select { |path| path.include?("test") }
bin_files = files.select { |path| path.start_with?("bin/") }
has_readme = files.include?("README.md")
puts "files=#{files.join(',')}"
puts "source_count=#{source_files.length}"
puts "test_count=#{test_files.length}"
puts "bin_count=#{bin_files.length}"
puts "has_readme=#{has_readme}"
files =
source_files = files.select { |path| path.start_with?("lib/") }
test_files = files.select { |path| path.include?("test") }
bin_files = files.select { |path| path.start_with?("bin/") }
has_readme = files.include?("README.md")
puts "files=#{files.join(',')}"
puts "source_count=#{source_files.length}"
puts "test_count=#{test_files.length}"
puts "bin_count=#{bin_files.length}"
puts "has_readme=#{has_readme}"
files =
source_files = files.select { |path| path.start_with?("lib/") }
test_files = files.select { |path| path.include?("test") }
bin_files = files.select { |path| path.start_with?("bin/") }
has_readme = files.include?("README.md")
puts "files=#{files.join(',')}"
puts "source_count=#{source_files.length}"
puts "test_count=#{test_files.length}"
puts "bin_count=#{bin_files.length}"
puts "has_readme=#{has_readme}"
layout
Model the project layout as data first: source files, tests, and executables should each have an obvious place.