Sha256: 7065bffce083a1700fd9c9c2b1f61348ac02f7d2f3b3b80ba962ddfcdb58e5ca

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

loader
======

Ruby module for Easy File lifting :)

### Introduction

Okey, before you even think about use this gem,
let's say this gem only for lazy ones...

the basic idea is to have an easy to use relative require system and a namespace based Constant loading logic

The fun part is , that this stuffs can be used in gems (modules),
because it do not depend on the Dir.pwd or any kind of absolute path or
the File expand_path tricks that based on the application position.

The end goal is to make an easy ruby file loader for apps and gems.

### Examples

load relative directory (not based on Dir.pwd but the caller files position)
if you pass multiple string as argument it will be joined by file separator that the OS use

```ruby

    require 'loader'

    # load all ruby file that was not loaded already
    # from that relative folder
    require_relative_directory "folder_name"

    # for recursive use try the following
    require_relative_directory_r "folder_name/path/etc"


```

If you like the basic idea that the app should not do any kind of Eager Load and become slow,
you can use the constant based autoload function

simple as this:

# lib/dog
```ruby

  class Dog
    def self.say
      "Wuff"
    end
  end

```

# lib/cat
```ruby

  class Cat
    #some meow here
  end

```

# lib/cat/tail
```ruby

  class Cat
    class Tail

      def self.grab
        "MEOW!!!"
      end

    end
  end

```

# lib/cat/pawn.rb
```ruby

  class Cat
    class Pawn
    end
  end

```

# lib/bootstrap
```ruby

    require 'loader/autoload'

    # from this point missing constants will be searched by file system path that is based on Object namespace
    Loader.autoload

    # no need to load the files , only when they required
    Cat::Tail.grab #> "MEOW!!!"

    class Cat
      Pawn #> Pawn Constant loaded and returned
    end

    class Cat
      Dog #> return Top lvl Dog Constant after file is loaded by this Constant request
    end

```

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
loader-2.2.1 README.md
loader-2.1.0 README.md