autoloaded 1.4.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +4 -8
- data/.rspec +1 -1
- data/.travis.yml +15 -0
- data/Gemfile +11 -10
- data/Guardfile +21 -22
- data/History.md +35 -10
- data/License.md +1 -1
- data/README.md +78 -68
- data/Rakefile +4 -0
- data/autoloaded.gemspec +41 -37
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/lib/autoloaded/autoloader.rb +24 -6
- data/lib/autoloaded/constant.rb +1 -0
- data/lib/autoloaded/deprecation.rb +0 -2
- data/lib/autoloaded/inflection.rb +0 -2
- data/lib/autoloaded/load_pathed_directory.rb +2 -4
- data/lib/autoloaded/specification.rb +2 -0
- data/lib/autoloaded/specifications.rb +3 -3
- data/lib/autoloaded/version.rb +1 -1
- data/lib/autoloaded/warning.rb +1 -3
- data/lib/tasks/lib_each.rake +15 -3
- data/lib/tasks/spec.rake +3 -6
- metadata +22 -121
- data/spec/autoloaded/autoloader_spec.rb +0 -469
- data/spec/autoloaded/constant_spec.rb +0 -53
- data/spec/autoloaded/deprecation_spec.rb +0 -23
- data/spec/autoloaded/inflection_spec.rb +0 -30
- data/spec/autoloaded/load_pathed_directory_spec.rb +0 -120
- data/spec/autoloaded/refine/string/to_source_filename_spec.rb +0 -19
- data/spec/autoloaded/specification_spec.rb +0 -98
- data/spec/autoloaded/specifications_spec.rb +0 -191
- data/spec/autoloaded/version_spec.rb +0 -3
- data/spec/autoloaded/warning_spec.rb +0 -115
- data/spec/autoloaded_macro_sharedspec.rb +0 -24
- data/spec/autoloaded_spec.rb +0 -321
- data/spec/fixtures/autoloaded_with_conventional_filename/N-est-ed.rb +0 -1
- data/spec/fixtures/autoloaded_with_conventional_filename/nest_ed.rb +0 -1
- data/spec/fixtures/autoloaded_with_conventional_filename/nested/doubly_nested.rb +0 -9
- data/spec/fixtures/autoloaded_with_conventional_filename/nested.rb +0 -16
- data/spec/fixtures/autoloaded_with_conventional_filename/old_school_autoload.rb +0 -5
- data/spec/fixtures/autoloaded_with_conventional_filename.rb +0 -12
- data/spec/fixtures/autoloaded_with_unconventional_filename/N-est-ed.rb +0 -7
- data/spec/fixtures/autoloaded_with_unconventional_filename/nest_ed.rb +0 -1
- data/spec/fixtures/autoloaded_with_unconventional_filename/old_school_autoload.rb +0 -5
- data/spec/fixtures/autoloaded_with_unconventional_filename.rb +0 -12
- data/spec/fixtures/filenames/AFilename.rb +0 -0
- data/spec/fixtures/filenames/a-file-name.rb +0 -0
- data/spec/fixtures/filenames/a-filename.rb +0 -0
- data/spec/fixtures/filenames/a_file_name.rb +0 -0
- data/spec/fixtures/filenames/a_filename.rb +0 -0
- data/spec/fixtures/filenames/afile-name.rb +0 -0
- data/spec/fixtures/filenames/afile_name.rb +0 -0
- data/spec/fixtures/not_autoloaded/nested.rb +0 -1
- data/spec/fixtures/not_autoloaded/old_school_autoload.rb +0 -5
- data/spec/fixtures/not_autoloaded.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename/N-est-ed.rb +0 -1
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename/nest_ed.rb +0 -1
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename/nested.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename/old_school_autoload.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename.rb +0 -10
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename_only/nested.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename_only/old_school_autoload.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_conventional_filename_only.rb +0 -10
- data/spec/fixtures/old_api/autoloaded_with_unconventional_filenames/N-est-ed.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_unconventional_filenames/nest_ed.rb +0 -0
- data/spec/fixtures/old_api/autoloaded_with_unconventional_filenames/old_school_autoload.rb +0 -5
- data/spec/fixtures/old_api/autoloaded_with_unconventional_filenames.rb +0 -10
- data/spec/fixtures/old_api/not_autoloaded/nested.rb +0 -1
- data/spec/fixtures/old_api/not_autoloaded/old_school_autoload.rb +0 -5
- data/spec/fixtures/old_api/not_autoloaded.rb +0 -6
- data/spec/matchers.rb +0 -85
- data/spec/spec_helper.rb +0 -91
- data/spec/support/util.rb +0 -43
- data/spec/support/without_side_effects.rb +0 -37
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 0736db59154581469d671b352eed15faaa35a23d962de033d9106fd69bb56887
         | 
| 4 | 
            +
              data.tar.gz: 58857610f89eda2d2e933767e81cb2e2901b78b4b7cc25ebbde7ff94acab75b9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9a1ca3c1af68c99bb541d136fcc38e3679f59bc77da1270f6a4f9e8b225cf4ded70c4678a25312ccb1bda6a7a5ce9a6634f2c13a16bd3df9c2f0550b2f91e7c5
         | 
| 7 | 
            +
              data.tar.gz: 97751b780b02f4d838bf0702bbae78c152ce3bcd41107369ded24f91319ed55d6388fe026cd2da9da9f642659a04096142f08d5bbef4715ad974869b1433e318
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rspec
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | @@ -3,10 +3,25 @@ bundler_args: --without debug doc tooling | |
| 3 3 | 
             
            rvm:
         | 
| 4 4 | 
             
              - 2.0
         | 
| 5 5 | 
             
              - 2.1
         | 
| 6 | 
            +
              - 2.2
         | 
| 7 | 
            +
              - 2.3
         | 
| 8 | 
            +
              - 2.4
         | 
| 9 | 
            +
              - 2.5
         | 
| 10 | 
            +
              - 2.6
         | 
| 11 | 
            +
              - 2.7
         | 
| 12 | 
            +
              - 3.0
         | 
| 6 13 | 
             
              - ruby-head
         | 
| 7 14 | 
             
              - jruby-head
         | 
| 15 | 
            +
              - rbx
         | 
| 16 | 
            +
              - rbx-2
         | 
| 8 17 | 
             
            script: "bundle exec rake test"
         | 
| 9 18 | 
             
            matrix:
         | 
| 10 19 | 
             
              allow_failures:
         | 
| 20 | 
            +
                - rvm: 1.9
         | 
| 11 21 | 
             
                - rvm: ruby-head
         | 
| 12 22 | 
             
                - rvm: jruby-head
         | 
| 23 | 
            +
                - rvm: rbx
         | 
| 24 | 
            +
                - rvm: rbx-2
         | 
| 25 | 
            +
            branches:
         | 
| 26 | 
            +
              except:
         | 
| 27 | 
            +
                - /^gh-pages.*$/
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -3,22 +3,23 @@ source 'https://rubygems.org' | |
| 3 3 | 
             
            gemspec
         | 
| 4 4 |  | 
| 5 5 | 
             
            group :debug do
         | 
| 6 | 
            -
              gem   'pry-byebug', | 
| 7 | 
            -
             | 
| 6 | 
            +
              gem   'pry-byebug',   '~> 3',                             platforms: [:mri_20,
         | 
| 7 | 
            +
                                                                                    :mri_21,
         | 
| 8 | 
            +
                                                                                    :mri_22,
         | 
| 9 | 
            +
                                                                                    :mri_23,
         | 
| 10 | 
            +
                                                                                    :mri_24,
         | 
| 11 | 
            +
                                                                                    :mri_25]
         | 
| 12 | 
            +
              gem   'pry-debugger', '~> 0',                             platforms: :mri_19
         | 
| 8 13 | 
             
            end
         | 
| 9 14 |  | 
| 10 15 | 
             
            group :doc do
         | 
| 11 | 
            -
              gem   'yard', | 
| 12 | 
            -
              gem   'rdiscount', | 
| 13 | 
            -
            end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            group :test do
         | 
| 16 | 
            -
              gem   'codeclimate-test-reporter', '~> 0', require: false
         | 
| 16 | 
            +
              gem   'yard',         '>= 0.9.11', '< 1', require: false
         | 
| 17 | 
            +
              gem   'rdiscount',    '~> 2',             require: false
         | 
| 17 18 | 
             
            end
         | 
| 18 19 |  | 
| 19 20 | 
             
            group :tooling do
         | 
| 20 | 
            -
              gem   'guard-rspec', | 
| 21 | 
            +
              gem   'guard-rspec',  '~> 4',             require: false
         | 
| 21 22 | 
             
              if RUBY_PLATFORM =~ /darwin/i
         | 
| 22 | 
            -
                gem 'rb-fsevent', | 
| 23 | 
            +
                gem 'rb-fsevent',   '~> 0',             require: false
         | 
| 23 24 | 
             
              end
         | 
| 24 25 | 
             
            end
         | 
    
        data/Guardfile
    CHANGED
    
    | @@ -1,38 +1,37 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            require 'guard/rspec/dsl'
         | 
| 2 2 |  | 
| 3 3 | 
             
            debugger_gem = %w(pry-byebug pry-debugger).detect do |gem|
         | 
| 4 4 | 
             
              `bundle show #{gem} 2>&1 >/dev/null`
         | 
| 5 5 | 
             
              $?.success?
         | 
| 6 6 | 
             
            end
         | 
| 7 7 | 
             
            debugger_require = debugger_gem ? " --require #{debugger_gem}" : nil
         | 
| 8 | 
            -
            guard :rspec, all_after_pass: true,
         | 
| 9 | 
            -
                          all_on_start:   true,
         | 
| 10 | 
            -
                          cmd: "bundle exec rspec#{debugger_require} --format progress" do
         | 
| 11 | 
            -
              # Run the corresponding spec (or all specs) when code changes.
         | 
| 12 | 
            -
              watch( %r{^lib/(.+)\.rb$} ) do |match|
         | 
| 13 | 
            -
                Dir["spec/#{match[1]}_spec.rb"].first || 'spec'
         | 
| 14 | 
            -
              end
         | 
| 15 8 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 9 | 
            +
            guard :rspec, all_on_start: true,
         | 
| 10 | 
            +
                          all_after_pass: true,
         | 
| 11 | 
            +
                          cmd: "bundle exec rspec --format progress#{debugger_require}" do
         | 
| 12 | 
            +
              dsl = Guard::RSpec::Dsl.new(self)
         | 
| 13 | 
            +
              rspec, ruby = dsl.rspec, dsl.ruby
         | 
| 18 14 |  | 
| 19 | 
            -
              #  | 
| 20 | 
            -
              watch( | 
| 15 | 
            +
              # RSpec files
         | 
| 16 | 
            +
              watch('.rspec')          { rspec.spec_dir }
         | 
| 17 | 
            +
              watch rspec.spec_helper  { rspec.spec_dir }
         | 
| 18 | 
            +
              watch rspec.spec_support { rspec.spec_dir }
         | 
| 19 | 
            +
              watch(%r{^spec/support}) { rspec.spec_dir } # This should not be necessary.
         | 
| 20 | 
            +
              watch rspec.spec_files
         | 
| 21 21 |  | 
| 22 22 | 
             
              # Run all specs when a matcher changes.
         | 
| 23 | 
            -
              watch( | 
| 23 | 
            +
              watch('spec/matchers.rb') { 'spec' }
         | 
| 24 24 |  | 
| 25 | 
            -
              # Run all specs when a  | 
| 26 | 
            -
              watch( | 
| 25 | 
            +
              # Run all specs when a shared spec changes.
         | 
| 26 | 
            +
              watch(%r{^spec/.+_sharedspec\.rb$}) { rspec.spec_dir }
         | 
| 27 27 |  | 
| 28 28 | 
             
              # Run all specs when a fixture changes.
         | 
| 29 | 
            -
              watch( | 
| 30 | 
            -
             | 
| 31 | 
            -
              # Run all specs when the RSpec configuration changes.
         | 
| 32 | 
            -
              watch( '.rspec'              ) { 'spec' }
         | 
| 33 | 
            -
              watch( 'spec/spec_helper.rb' ) { 'spec' }
         | 
| 29 | 
            +
              watch(%r{^spec/fixtures}) { rspec.spec_dir }
         | 
| 34 30 |  | 
| 35 31 | 
             
              # Run all specs when the bundle changes.
         | 
| 36 | 
            -
              watch( | 
| 37 | 
            -
              watch( | 
| 32 | 
            +
              watch('Gemfile.lock')      { rspec.spec_dir }
         | 
| 33 | 
            +
              watch(%r{^(.+)\.gemspec$}) { rspec.spec_dir }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              # Ruby files
         | 
| 36 | 
            +
              dsl.watch_spec_files_for ruby.lib_files
         | 
| 38 37 | 
             
            end
         | 
    
        data/History.md
    CHANGED
    
    | @@ -1,8 +1,28 @@ | |
| 1 | 
            -
            # Version history for the  | 
| 1 | 
            +
            # Version history for the *Autoloaded* project
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## <a name="v1.7.0"></a>v1.7.0, Sat 9/19/2021
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Add support for Ruby v3 (thanks to [@krimsonkla][GitHub-user-krimsonkla])
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## <a name="v1.6.0"></a>v1.6.0, Sun 4/05/2020
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Eliminate Ruby warnings about
         | 
| 10 | 
            +
              [*Binding#source_location*][Ruby-Core-Binding-source_location] (thanks to
         | 
| 11 | 
            +
              [@guss77][GitHub-user-guss77])
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ## <a name="v1.5.1"></a>v1.5.1, Wed 10/18/2017
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            * Eliminate Ruby warnings about undefined instance variables
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ## <a name="v1.5.0"></a>v1.5.0, Wed 2/22/2017
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            * Add support for Ruby load paths (`$:`) that contain one or more
         | 
| 20 | 
            +
              [*Pathname*][Ruby-Stdlib-Pathname] objects (thanks to
         | 
| 21 | 
            +
              [@ekampp][GitHub-user-ekampp])
         | 
| 2 22 |  | 
| 3 23 | 
             
            ## <a name="v1.4.1"></a>v1.4.1, Sat 1/24/2015
         | 
| 4 24 |  | 
| 5 | 
            -
            * Don’t warn about a  | 
| 25 | 
            +
            * Don’t warn about a *VERSION* constant presumably loaded by a *.gemspec*
         | 
| 6 26 |  | 
| 7 27 | 
             
            ## <a name="v1.3.0"></a>v1.3.0, Fri 12/26/2014
         | 
| 8 28 |  | 
| @@ -16,11 +36,11 @@ | |
| 16 36 |  | 
| 17 37 | 
             
            * Correct/improve autoload behavior
         | 
| 18 38 | 
             
              * Instead of returning the source **directory** path from
         | 
| 19 | 
            -
                [ | 
| 39 | 
            +
                [*Module#autoload?*][Ruby-Core-Module-autoload], return one or more matching
         | 
| 20 40 | 
             
                source **file** path(s)
         | 
| 21 41 | 
             
              * Use Ruby load path (`$:`) to handle relative source file paths
         | 
| 22 | 
            -
              * Explain  | 
| 23 | 
            -
                [ | 
| 42 | 
            +
              * Explain *Module#autoload?* and
         | 
| 43 | 
            +
                [*Module#constants*][Ruby-Core-Module-constants] in the [readme][readme] and
         | 
| 24 44 | 
             
                in [inline documentation][inline-documentation]
         | 
| 25 45 |  | 
| 26 46 | 
             
            ## <a name="v1.0.0"></a>v1.0.0, Wed 10/29/2014
         | 
| @@ -31,8 +51,13 @@ | |
| 31 51 |  | 
| 32 52 | 
             
            (First release)
         | 
| 33 53 |  | 
| 34 | 
            -
            [ | 
| 35 | 
            -
            [ | 
| 36 | 
            -
            [ | 
| 37 | 
            -
            [ | 
| 38 | 
            -
            [ | 
| 54 | 
            +
            [GitHub-user-krimsonkla]:            https://github.com/krimsonkla                                   "GitHub user @krimsonkla"
         | 
| 55 | 
            +
            [GitHub-user-ekampp]:                https://github.com/ekampp                                       "GitHub user @ekampp"
         | 
| 56 | 
            +
            [GitHub-user-guss77]:                https://github.com/guss77                                       "GitHub user @guss77"
         | 
| 57 | 
            +
            [JRuby]:                             https://www.jruby.org/
         | 
| 58 | 
            +
            [Ruby-Core-Binding-source_location]: https://ruby-doc.org/core/Binding.html#method-i-source_location "‘Binding#source_location’ method in the Ruby Core Library"
         | 
| 59 | 
            +
            [Ruby-Core-Module-autoload]:         https://ruby-doc.org/core/Module.html#method-i-autoload-3F      "‘Module#autoload’ method in the Ruby Core Library"
         | 
| 60 | 
            +
            [Ruby-Core-Module-constants]:        https://ruby-doc.org/core/Module.html#method-i-constants        "‘Module#constants’ method in the Ruby Core Library"
         | 
| 61 | 
            +
            [Ruby-Stdlib-Pathname]:              https://ruby-doc.org/stdlib/libdoc/pathname/rdoc/Pathname.html  "‘Pathname’ class in the Ruby Standard Library"
         | 
| 62 | 
            +
            [readme]:                            https://github.com/njonsson/autoloaded/blob/master/README.md    "Autoloaded readme"
         | 
| 63 | 
            +
            [inline-documentation]:              https://www.rubydoc.info/github/njonsson/autoloaded             "Autoloaded inline documentation"
         | 
    
        data/License.md
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # The MIT License
         | 
| 2 2 |  | 
| 3 | 
            -
            Source code for  | 
| 3 | 
            +
            Source code for *Autoloaded* is Copyright © 2014 [Nils Jonsson][mail] and
         | 
| 4 4 | 
             
            [contributors][contributors].
         | 
| 5 5 |  | 
| 6 6 | 
             
            Permission is hereby granted, free of charge, to any person obtaining a copy of
         | 
    
        data/README.md
    CHANGED
    
    | @@ -6,18 +6,17 @@ | |
| 6 6 | 
             
            [![Code Climate quality report] ][Code-Climate-report]
         | 
| 7 7 | 
             
            [![Code Climate coverage report]][Code-Climate-report]
         | 
| 8 8 |  | 
| 9 | 
            -
            [![Gemnasium build status]      ][Gemnasium-build-status]
         | 
| 10 9 | 
             
            [![Inch CI build status]        ][Inch-CI-build-status]
         | 
| 11 10 | 
             
            [![RubyGems release]            ][RubyGems-release]
         | 
| 12 11 |  | 
| 13 | 
            -
            If you like the [ | 
| 14 | 
            -
            Ruby Core library, you may have wished for  | 
| 12 | 
            +
            If you like the [*Module#autoload*][Ruby-Core-Module-autoload] feature of the
         | 
| 13 | 
            +
            Ruby Core library, you may have wished for *Autoloaded*. It eliminates the
         | 
| 15 14 | 
             
            drudgery of handcrafting an `autoload` statement for each Ruby source code file
         | 
| 16 15 | 
             
            in your project. It also avoids the limitations of rigid convention-driven
         | 
| 17 16 | 
             
            facilities such as those provided by the [ActiveSupport][ActiveSupport-Autoload]
         | 
| 18 17 | 
             
            RubyGem.
         | 
| 19 18 |  | 
| 20 | 
            -
             | 
| 19 | 
            +
            *Autoloaded* assumes, but does not enforce, `CamelCase`-to-`snake_case`
         | 
| 21 20 | 
             
            correspondence between the names of constants and source files. You can combine
         | 
| 22 21 | 
             
            conventions, even putting multiple autoloaded constants in a single source file.
         | 
| 23 22 |  | 
| @@ -27,7 +26,7 @@ Install [the RubyGem][RubyGems-release]. | |
| 27 26 |  | 
| 28 27 | 
             
                $ gem install autoloaded
         | 
| 29 28 |  | 
| 30 | 
            -
            Use  | 
| 29 | 
            +
            Use *Autoloaded* in your RubyGem project by making it a runtime dependency.
         | 
| 31 30 |  | 
| 32 31 | 
             
            ```ruby
         | 
| 33 32 | 
             
            # my_awesome_gem.gemspec
         | 
| @@ -39,13 +38,13 @@ Gem::Specification.new do |spec| | |
| 39 38 | 
             
            end
         | 
| 40 39 | 
             
            ```
         | 
| 41 40 |  | 
| 42 | 
            -
            Or you may want to make  | 
| 41 | 
            +
            Or you may want to make *Autoloaded* a dependency of your project by using
         | 
| 43 42 | 
             
            [Bundler][Bundler].
         | 
| 44 43 |  | 
| 45 44 | 
             
            ```ruby
         | 
| 46 45 | 
             
            # Gemfile
         | 
| 47 46 |  | 
| 48 | 
            -
            source ' | 
| 47 | 
            +
            source 'https://rubygems.org'
         | 
| 49 48 |  | 
| 50 49 | 
             
            gem 'autoloaded', '~> 1'
         | 
| 51 50 | 
             
            ```
         | 
| @@ -66,15 +65,15 @@ Suppose you have the following source files. | |
| 66 65 | 
             
                │  └─ version.rb
         | 
| 67 66 | 
             
                └─ my_awesome_gem.rb
         | 
| 68 67 |  | 
| 69 | 
            -
            ### The  | 
| 68 | 
            +
            ### The *Autoloaded.module* or *Autoloaded.class* method
         | 
| 70 69 |  | 
| 71 | 
            -
            The  | 
| 72 | 
            -
            [ | 
| 70 | 
            +
            The *Autoloaded.module* and *Autoloaded.class* method calls below invoke
         | 
| 71 | 
            +
            [*Module#autoload*][Ruby-Core-Module-autoload] for each source file in the
         | 
| 73 72 | 
             
            calling module’s corresponding directory. Note that these methods must receive a
         | 
| 74 73 | 
             
            block, even if it’s an empty block.
         | 
| 75 74 |  | 
| 76 75 | 
             
            The file paths used are abbreviated, if possible, using a directory of the Ruby
         | 
| 77 | 
            -
            load path (`$:`). They are also rendered without their  | 
| 76 | 
            +
            load path (`$:`). They are also rendered without their *.rb* extension.
         | 
| 78 77 |  | 
| 79 78 | 
             
            ```ruby
         | 
| 80 79 | 
             
            # lib/my_awesome_gem.rb
         | 
| @@ -152,7 +151,7 @@ MyAwesomeGem::DB::Mysql  # Raises NameError because | |
| 152 151 |  | 
| 153 152 | 
             
            ### The `with` specification
         | 
| 154 153 |  | 
| 155 | 
            -
             | 
| 154 | 
            +
            *Autoloaded* needs hints from you concerning unpredictable spellings,
         | 
| 156 155 | 
             
            stylization, and organization of constant names and/or source file names. You can
         | 
| 157 156 | 
             
            specify `with` as:
         | 
| 158 157 |  | 
| @@ -173,21 +172,21 @@ You can specify `with` multiple times, and its effects are cumulative. | |
| 173 172 | 
             
            # lib/my_awesome_gem.rb
         | 
| 174 173 | 
             
            module MyAwesomeGem
         | 
| 175 174 |  | 
| 176 | 
            -
              Autoloaded.module do | | 
| 177 | 
            -
                 | 
| 175 | 
            +
              Autoloaded.module do |autoloading|
         | 
| 176 | 
            +
                autoloading.with :DB, :VERSION
         | 
| 178 177 | 
             
                # Or:
         | 
| 179 | 
            -
                #  | 
| 180 | 
            -
                #  | 
| 178 | 
            +
                # autoloading.with :DB
         | 
| 179 | 
            +
                # autoloading.with :VERSION
         | 
| 181 180 | 
             
                # Or:
         | 
| 182 | 
            -
                #  | 
| 181 | 
            +
                # autoloading.with DB: 'db', VERSION: 'version'
         | 
| 183 182 | 
             
                # Or:
         | 
| 184 | 
            -
                #  | 
| 185 | 
            -
                #  | 
| 183 | 
            +
                # autoloading.with DB:      'db'
         | 
| 184 | 
            +
                # autoloading.with VERSION: 'version'
         | 
| 186 185 | 
             
                # Or:
         | 
| 187 | 
            -
                #  | 
| 186 | 
            +
                # autoloading.with 'db' => :DB, 'version' => :VERSION
         | 
| 188 187 | 
             
                # Or:
         | 
| 189 | 
            -
                #  | 
| 190 | 
            -
                #  | 
| 188 | 
            +
                # autoloading.with 'db'      => :DB
         | 
| 189 | 
            +
                # autoloading.with 'version' => :VERSION
         | 
| 191 190 | 
             
              end
         | 
| 192 191 |  | 
| 193 192 | 
             
              # The above is the equivalent of:
         | 
| @@ -202,20 +201,20 @@ module MyAwesomeGem | |
| 202 201 |  | 
| 203 202 | 
             
              class DB
         | 
| 204 203 |  | 
| 205 | 
            -
                Autoloaded.class do | | 
| 206 | 
            -
                   | 
| 204 | 
            +
                Autoloaded.class do |autoloading|
         | 
| 205 | 
            +
                  autoloading.with :MySQL, :PostgreSQL, [:Access, :SQLServer] => 'MicroSoft'
         | 
| 207 206 | 
             
                  # Or:
         | 
| 208 | 
            -
                  #  | 
| 209 | 
            -
                  # | 
| 210 | 
            -
                  # | 
| 211 | 
            -
                  # | 
| 207 | 
            +
                  # autoloading.with :MySQL,
         | 
| 208 | 
            +
                  #                  :PostgreSQL,
         | 
| 209 | 
            +
                  #                  Access:    'MicroSoft',
         | 
| 210 | 
            +
                  #                  SQLServer: 'MicroSoft'
         | 
| 212 211 | 
             
                  # Or:
         | 
| 213 | 
            -
                  #  | 
| 212 | 
            +
                  # autoloading.with :MySQL, :PostgreSQL, 'MicroSoft' => [:Access, :SQLServer]
         | 
| 214 213 | 
             
                  # Or:
         | 
| 215 | 
            -
                  #  | 
| 216 | 
            -
                  # | 
| 217 | 
            -
                  # | 
| 218 | 
            -
                  # | 
| 214 | 
            +
                  # autoloading.with :MySQL,
         | 
| 215 | 
            +
                  #                  :PostgreSQL,
         | 
| 216 | 
            +
                  #                  'MicroSoft' => :Access,
         | 
| 217 | 
            +
                  #                  'MicroSoft' => :SQLServer
         | 
| 219 218 | 
             
                  # Or ...
         | 
| 220 219 | 
             
                end
         | 
| 221 220 |  | 
| @@ -283,12 +282,12 @@ module MyAwesomeGem | |
| 283 282 |  | 
| 284 283 | 
             
              class DB
         | 
| 285 284 |  | 
| 286 | 
            -
                Autoloaded.class do | | 
| 287 | 
            -
                   | 
| 285 | 
            +
                Autoloaded.class do |autoloading|
         | 
| 286 | 
            +
                  autoloading.with :MySQL, :PostgreSQL, [:Access, :SQLServer] => 'MicroSoft'
         | 
| 288 287 |  | 
| 289 | 
            -
                   | 
| 288 | 
            +
                  autoloading.except 'SELF-DESTRUCT!'
         | 
| 290 289 | 
             
                  # Or:
         | 
| 291 | 
            -
                  #  | 
| 290 | 
            +
                  # autoloading.except :SELF_DESTRUCT_
         | 
| 292 291 | 
             
                  # Or ...
         | 
| 293 292 | 
             
                end
         | 
| 294 293 |  | 
| @@ -340,9 +339,9 @@ cumulative. | |
| 340 339 |  | 
| 341 340 | 
             
            ### The `from` specification
         | 
| 342 341 |  | 
| 343 | 
            -
            It’s recommended that you call  | 
| 342 | 
            +
            It’s recommended that you call *Autoloaded.module* or *Autoloaded.class* from
         | 
| 344 343 | 
             
            within the source file where your module or class is defined. This practice
         | 
| 345 | 
            -
            allows  | 
| 344 | 
            +
            allows *Autoloaded* to assume that the source files to be autoloaded are in a
         | 
| 346 345 | 
             
            directory of the same name (and in the same location) as the module’s defining
         | 
| 347 346 | 
             
            source file.
         | 
| 348 347 |  | 
| @@ -357,12 +356,12 @@ which source files should be autoloaded. | |
| 357 356 |  | 
| 358 357 | 
             
            module MyAwesomeGem
         | 
| 359 358 |  | 
| 360 | 
            -
              Autoloaded.module do | | 
| 359 | 
            +
              Autoloaded.module do |autoloading|
         | 
| 361 360 | 
             
                # The following code is not actually very useful since the installed location
         | 
| 362 361 | 
             
                # of a RubyGem varies with the operating system and user preferences. How to
         | 
| 363 362 | 
             
                # compute the path properly is outside the scope of this readme and is left
         | 
| 364 363 | 
             
                # as an exercise for the reader.
         | 
| 365 | 
            -
                 | 
| 364 | 
            +
                autoloading.from '/absolute/path/to/my_awesome_gem'
         | 
| 366 365 | 
             
              end
         | 
| 367 366 |  | 
| 368 367 | 
             
            end
         | 
| @@ -371,18 +370,18 @@ end | |
| 371 370 | 
             
            A path provided to `from` cannot be relative; it must start with the filesystem
         | 
| 372 371 | 
             
            root.
         | 
| 373 372 |  | 
| 374 | 
            -
            If you specify `from` multiple times in an  | 
| 373 | 
            +
            If you specify `from` multiple times in an *Autoloaded* block, only the last one
         | 
| 375 374 | 
             
            takes effect.
         | 
| 376 375 |  | 
| 377 | 
            -
            ### The  | 
| 376 | 
            +
            ### The *Autoloaded.warn* method
         | 
| 378 377 |  | 
| 379 | 
            -
            There are two circumstances under which  | 
| 378 | 
            +
            There are two circumstances under which *Autoloaded* by default will write
         | 
| 380 379 | 
             
            warnings to stderr:
         | 
| 381 380 |  | 
| 382 381 | 
             
            * Overriding an established autoload
         | 
| 383 382 | 
             
            * Establishing an autoload for a defined constant
         | 
| 384 383 |  | 
| 385 | 
            -
            You can silence these warnings by passing `false` to  | 
| 384 | 
            +
            You can silence these warnings by passing `false` to *Autoloaded.warn*.  (Passing
         | 
| 386 385 | 
             
            `true` turns warnings on if they are off.)
         | 
| 387 386 |  | 
| 388 387 | 
             
            ```ruby
         | 
| @@ -438,7 +437,7 @@ end | |
| 438 437 |  | 
| 439 438 | 
             
            ### How to debug autoloading
         | 
| 440 439 |  | 
| 441 | 
            -
            The  | 
| 440 | 
            +
            The *Autoloaded.module* or *Autoloaded.class* method returns an ordered list of
         | 
| 442 441 | 
             
            arguments it has passed to `autoload`.
         | 
| 443 442 |  | 
| 444 443 | 
             
            ```ruby
         | 
| @@ -448,9 +447,9 @@ module MyAwesomeGem | |
| 448 447 |  | 
| 449 448 | 
             
              class DB
         | 
| 450 449 |  | 
| 451 | 
            -
                results = Autoloaded.class do | | 
| 452 | 
            -
                   | 
| 453 | 
            -
                   | 
| 450 | 
            +
                results = Autoloaded.class do |autoloading|
         | 
| 451 | 
            +
                  autoloading.with   :MySQL, :PostgreSQL, [:Access, :SQLServer] => 'MicroSoft'
         | 
| 452 | 
            +
                  autoloading.except 'SELF-DESTRUCT!'
         | 
| 454 453 | 
             
                end
         | 
| 455 454 | 
             
                STDOUT.puts results.inspect  # See output below.
         | 
| 456 455 |  | 
| @@ -465,20 +464,20 @@ end | |
| 465 464 | 
             
            #  [:PostgreSQL, 'my_awesome_gem/db/postgre_sql']]
         | 
| 466 465 | 
             
            ```
         | 
| 467 466 |  | 
| 468 | 
            -
            You can also hook [ | 
| 469 | 
            -
            [ | 
| 467 | 
            +
            You can also hook [*Module#autoload*][Ruby-Core-Module-autoload] and
         | 
| 468 | 
            +
            [*Kernel#autoload*][Ruby-Core-Kernel-autoload] via monkeypatching or other means
         | 
| 470 469 | 
             
            in order to see what’s happening.
         | 
| 471 470 |  | 
| 472 471 | 
             
            ### Source filenames are relative to the `from` specification
         | 
| 473 472 |  | 
| 474 473 | 
             
            You may have noticed that source filenames in the above examples are not
         | 
| 475 | 
            -
            absolute. They are relative to the  | 
| 474 | 
            +
            absolute. They are relative to the *Autoloaded* block’s `from` specification
         | 
| 476 475 | 
             
            (which I recommend that you allow to be computed for you —
         | 
| 477 476 | 
             
            [see above](#the-from-specification)).
         | 
| 478 477 |  | 
| 479 478 | 
             
            ### Recursive autoloading not supported
         | 
| 480 479 |  | 
| 481 | 
            -
             | 
| 480 | 
            +
            *Autoloaded* does not perform deep autoloading of nested namespaces and
         | 
| 482 481 | 
             
            directories. This is by design.
         | 
| 483 482 |  | 
| 484 483 | 
             
            ## Contributing
         | 
| @@ -489,6 +488,19 @@ directories. This is by design. | |
| 489 488 | 
             
            4. Push to the branch: `git push origin my-new-feature`.
         | 
| 490 489 | 
             
            5. [Create][compare-Autoloaded-branches] a new pull request.
         | 
| 491 490 |  | 
| 491 | 
            +
            Development
         | 
| 492 | 
            +
            -----------
         | 
| 493 | 
            +
             | 
| 494 | 
            +
            After cloning the repository, `bin/setup` to install dependencies. Then `rake` to
         | 
| 495 | 
            +
            run the tests. You can also `bin/console` to get an interactive prompt that will
         | 
| 496 | 
            +
            allow you to experiment.
         | 
| 497 | 
            +
             | 
| 498 | 
            +
            To install this gem onto your local machine, `bundle exec rake install`. To
         | 
| 499 | 
            +
            release a new version, update the version number in *lib/autoloaded/version.rb*,
         | 
| 500 | 
            +
            and then `bundle exec rake release`, which will create a Git tag for the version,
         | 
| 501 | 
            +
            push Git commits and tags, and push the *.gem* file to
         | 
| 502 | 
            +
            [RubyGems.org](RubyGems-release).
         | 
| 503 | 
            +
             | 
| 492 504 | 
             
            ## License
         | 
| 493 505 |  | 
| 494 506 | 
             
            Released under the [MIT License][MIT-License].
         | 
| @@ -497,20 +509,18 @@ Released under the [MIT License][MIT-License]. | |
| 497 509 | 
             
            [Travis CI build status]:       https://secure.travis-ci.org/njonsson/autoloaded.svg?branch=v1.x
         | 
| 498 510 | 
             
            [Code Climate quality report]:  https://codeclimate.com/github/njonsson/autoloaded/badges/gpa.svg
         | 
| 499 511 | 
             
            [Code Climate coverage report]: https://codeclimate.com/github/njonsson/autoloaded/badges/coverage.svg
         | 
| 500 | 
            -
            [ | 
| 501 | 
            -
            [Inch CI build status]:         http://inch-ci.org/github/njonsson/autoloaded.svg?branch=v1.x
         | 
| 512 | 
            +
            [Inch CI build status]:         https://www.inch-ci.org/github/njonsson/autoloaded.svg?branch=v1.x
         | 
| 502 513 | 
             
            [RubyGems release]:             https://badge.fury.io/rb/autoloaded.svg
         | 
| 503 514 |  | 
| 504 | 
            -
            [spider-gear-image]:           https://www.flickr.com/photos/dongkwan/4941065976 | 
| 505 | 
            -
            [Travis-CI-build-status]:       | 
| 506 | 
            -
            [Code-Climate-report]:          | 
| 507 | 
            -
            [ | 
| 508 | 
            -
            [ | 
| 509 | 
            -
            [ | 
| 510 | 
            -
            [ | 
| 511 | 
            -
            [ | 
| 512 | 
            -
            [ | 
| 513 | 
            -
            [ | 
| 514 | 
            -
            [ | 
| 515 | 
            -
            [ | 
| 516 | 
            -
            [MIT-License]:                 http://github.com/njonsson/autoloaded/blob/master/License.md   "MIT License claim for Autoloaded"
         | 
| 515 | 
            +
            [spider-gear-image]:           https://www.flickr.com/photos/dongkwan/4941065976               "spider gear image by Ernesto Andrade"
         | 
| 516 | 
            +
            [Travis-CI-build-status]:      https://www.travis-ci.org/njonsson/autoloaded                   "Travis CI build status for Autoloaded"
         | 
| 517 | 
            +
            [Code-Climate-report]:         https://codeclimate.com/github/njonsson/autoloaded              "Code Climate report for Autoloaded"
         | 
| 518 | 
            +
            [Inch-CI-build-status]:        https://www.inch-ci.org/github/njonsson/autoloaded              "Inch CI build status for Autoloaded"
         | 
| 519 | 
            +
            [RubyGems-release]:            https://rubygems.org/gems/autoloaded                            "RubyGems release of Autoloaded"
         | 
| 520 | 
            +
            [Ruby-Core-Module-autoload]:   https://ruby-doc.org/core/Module.html#method-i-autoload         "‘Module#autoload’ method in the Ruby Core Library"
         | 
| 521 | 
            +
            [ActiveSupport-Autoload]:      https://api.rubyonrails.org/classes/ActiveSupport/Autoload.html "‘ActiveSupport::Autoload’ module in the Rails API"
         | 
| 522 | 
            +
            [Bundler]:                     https://bundler.io/
         | 
| 523 | 
            +
            [Ruby-Core-Kernel-autoload]:   https://ruby-doc.org/core/Kernel.html#method-i-autoload         "‘Kernel#autoload’ method in the Ruby Core Library"
         | 
| 524 | 
            +
            [fork-Autoloaded]:             https://github.com/njonsson/autoloaded/fork                     "Fork the official repository of Autoloaded"
         | 
| 525 | 
            +
            [compare-Autoloaded-branches]: https://github.com/njonsson/autoloaded/compare                  "Compare branches of Autoloaded repositories"
         | 
| 526 | 
            +
            [MIT-License]:                 https://github.com/njonsson/autoloaded/blob/master/License.md   "MIT License claim for Autoloaded"
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/autoloaded.gemspec
    CHANGED
    
    | @@ -1,46 +1,50 @@ | |
| 1 1 | 
             
            # coding: utf-8
         | 
| 2 | 
            -
             | 
| 3 2 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 4 3 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            require 'autoloaded'
         | 
| 4 | 
            +
            require 'autoloaded/version'
         | 
| 7 5 |  | 
| 8 6 | 
             
            Gem::Specification.new do |spec|
         | 
| 9 | 
            -
              spec.name | 
| 10 | 
            -
              spec.version | 
| 11 | 
            -
              spec.authors | 
| 12 | 
            -
              spec.email | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
                                    | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
              spec.homepage | 
| 34 | 
            -
              spec.license | 
| 7 | 
            +
              spec.name        = 'autoloaded'
         | 
| 8 | 
            +
              spec.version     = Autoloaded::VERSION
         | 
| 9 | 
            +
              spec.authors     = ['Nils Jonsson']
         | 
| 10 | 
            +
              spec.email       = ['autoloaded@nilsjonsson.com']
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              spec.summary     = <<-end_summary.chomp.gsub(/^\s+/, '').gsub("\n", ' ')
         | 
| 13 | 
            +
                                   Eliminates the drudgery of handcrafting a Ruby Core
         | 
| 14 | 
            +
                                   library `autoload` statement for each Ruby source code
         | 
| 15 | 
            +
                                   file in your project. It also avoids the limitations of
         | 
| 16 | 
            +
                                   rigid convention-driven facilities such as those provided
         | 
| 17 | 
            +
                                   by the ActiveSupport RubyGem.
         | 
| 18 | 
            +
                                 end_summary
         | 
| 19 | 
            +
              spec.description = <<-end_description.chomp.gsub(/^\s+/, '').gsub("\n", ' ')
         | 
| 20 | 
            +
                                   If you like the ‘Module#autoload’ feature of the Ruby Core
         | 
| 21 | 
            +
                                   library, you may have wished for Autoloaded. It eliminates
         | 
| 22 | 
            +
                                   the drudgery of handcrafting an `autoload` statement for
         | 
| 23 | 
            +
                                   each Ruby source code file in your project. It also avoids
         | 
| 24 | 
            +
                                   the limitations of rigid convention-driven facilities such
         | 
| 25 | 
            +
                                   as those provided by the ActiveSupport RubyGem. Autoloaded
         | 
| 26 | 
            +
                                   assumes, but does not enforce, `CamelCase`-to-`snake_case`
         | 
| 27 | 
            +
                                   correspondence between the names of constants and source
         | 
| 28 | 
            +
                                   files. You can combine conventions, even putting multiple
         | 
| 29 | 
            +
                                   autoloaded constants in a single source file.
         | 
| 30 | 
            +
                                 end_description
         | 
| 31 | 
            +
              spec.homepage    = 'https://njonsson.github.io/autoloaded'
         | 
| 32 | 
            +
              spec.license     = 'MIT'
         | 
| 35 33 |  | 
| 36 | 
            -
              spec. | 
| 37 | 
            -
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename f }
         | 
| 38 | 
            -
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 39 | 
            -
              spec.require_paths = ['lib']
         | 
| 34 | 
            +
              spec.required_ruby_version = '>= 2', '< 4'
         | 
| 40 35 |  | 
| 41 | 
            -
              spec. | 
| 36 | 
            +
              spec.add_development_dependency 'codeclimate-test-reporter', '~>  0'
         | 
| 37 | 
            +
              if RUBY_VERSION < '2.2'
         | 
| 38 | 
            +
                spec.add_development_dependency 'rake',                    '~> 12'
         | 
| 39 | 
            +
              else
         | 
| 40 | 
            +
                spec.add_development_dependency 'rake',                    '~> 13'
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
              spec.add_development_dependency 'rspec',                     '~>  3.3'
         | 
| 42 43 |  | 
| 43 | 
            -
              spec. | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 44 | 
            +
              spec.files         = `git ls-files -z`.split("\x0").reject do |f|
         | 
| 45 | 
            +
                                     f.match(%r{^(test|spec|features)/})
         | 
| 46 | 
            +
                                   end
         | 
| 47 | 
            +
              spec.bindir        = 'exe'
         | 
| 48 | 
            +
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename f }
         | 
| 49 | 
            +
              spec.require_paths = %w(lib)
         | 
| 46 50 | 
             
            end
         |