class Kangaru::Paths
def app_dir
def app_dir @app_dir ||= lib_dir.join(name) end
def build_path(*fragments, dir:, ext:)
def build_path(*fragments, dir:, ext:) return dir if fragments.empty? ext = ".#{ext}" if ext file = "#{fragments.pop}#{ext}" dir.join(*fragments, file) end
def collapsed_dirs
def collapsed_dirs [models_dir, controllers_dir].map(&:to_s) end
def controllers_dir
def controllers_dir @controllers_dir ||= app_dir.join(CONTROLLERS_DIRNAME) end
def dir
def dir @dir ||= gem_path.dirname end
def gem_dir
def gem_dir @gem_dir ||= lib_dir.dirname end
def gem_path(*fragments, ext: nil)
def gem_path(*fragments, ext: nil) build_path(*fragments, dir: gem_dir, ext:) end
def initialize(source:)
def initialize(source:) @source = Pathname.new(source) end
def lib_dir
def lib_dir @lib_dir ||= source.dirname end
def lib_path(*fragments, ext: :rb)
1. gem_name.rb (source_file)
Paths inside the lib path of the gem. Conventionally contains two files:
def lib_path(*fragments, ext: :rb) build_path(*fragments, dir: lib_dir, ext:) end
def models_dir
def models_dir @models_dir ||= app_dir.join(MODELS_DIRNAME) end
def name
def name @name ||= source.basename(".rb").to_s end
def path(*fragments, ext: :rb)
def path(*fragments, ext: :rb) build_path(*fragments, dir: app_dir, ext:) end
def view_path(*fragments, ext: :erb)
def view_path(*fragments, ext: :erb) build_path(*fragments, dir: views_dir, ext:) end
def views_dir
def views_dir @views_dir ||= app_dir.join(VIEWS_DIRNAME) end