rails_drivers 1.1.0 → 1.2.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 +4 -4
 - data/README.md +11 -3
 - data/lib/rails_drivers/extensions.rb +1 -0
 - data/lib/rails_drivers/railtie.rb +13 -0
 - data/lib/rails_drivers/setup.rb +11 -3
 - data/lib/rails_drivers/version.rb +1 -1
 - metadata +8 -8
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1c7d656ab0c27596f48e919c471b2ccfa30859bc808ae8942e24d8924fbbe7e7
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 65275e5544bb6b1a76c82c106fd2f8cd7df6a346422a8accf655fb5026df06d0
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c03812aa671e2305a5dd04a373a4bb2fe06bb37f307ade5bf3a74398b8d0722c97b94a8cb71f372eb53699bc5101260804da1b9d3f98ac34f13c3fe4740485b5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c43ef0a47625c66942ef8c841b917047bf6b63945d9ac483fe202d5630b0da8b07088ba586acaceab1606de128e749422ed547f3498be191864e4478ee49ae48
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -11,7 +11,7 @@ Technically speaking, "driver" is just a fancy name for code that live in a diff 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            The "main app" refers to the files inside your `<project root>/app` directory.
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
            If your test suite is good enough (see [Testing for coupling](#testing-for-coupling), you can test that these rules are adhered to by selectively adding and removing drivers before running your tests.
         
     | 
| 
      
 14 
     | 
    
         
            +
            If your test suite is good enough (see [Testing for coupling](#testing-for-coupling)), you can test that these rules are adhered to by selectively adding and removing drivers before running your tests.
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            ## Aren't these just engines?
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
         @@ -44,7 +44,7 @@ Run `rails g driver my_new_driver_name` to get a scaffold driver. 
     | 
|
| 
       44 
44 
     | 
    
         
             
            `bundle exec driver my_driver_name generate migration blah etc_etc:string`
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
            The `driver` utility technically works with other generators and rake tasks, but is only guaranteed to work with migrations.
         
     | 
| 
       47 
     | 
    
         
            -
            The reason is that some generators have hard-coded path  
     | 
| 
      
 47 
     | 
    
         
            +
            The reason is that some generators have hard-coded path strings, rather than using the Rails path methods.
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
            ### Creating a rake task in a driver
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
         @@ -132,6 +132,8 @@ Of course there's nothing stopping you from using if-statements to detect whethe 
     | 
|
| 
       132 
132 
     | 
    
         
             
            ## Installation
         
     | 
| 
       133 
133 
     | 
    
         
             
            Add this line to your application's Gemfile:
         
     | 
| 
       134 
134 
     | 
    
         | 
| 
      
 135 
     | 
    
         
            +
            ### Install the gem
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
       135 
137 
     | 
    
         
             
            ```ruby
         
     | 
| 
       136 
138 
     | 
    
         
             
            gem 'rails_drivers'
         
     | 
| 
       137 
139 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -141,15 +143,21 @@ And then execute: 
     | 
|
| 
       141 
143 
     | 
    
         
             
            $ bundle install
         
     | 
| 
       142 
144 
     | 
    
         
             
            ```
         
     | 
| 
       143 
145 
     | 
    
         | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
      
 146 
     | 
    
         
            +
            ### Update routes file
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            Add these lines to your routes.rb:
         
     | 
| 
       145 
149 
     | 
    
         | 
| 
       146 
150 
     | 
    
         
             
            ```ruby
         
     | 
| 
      
 151 
     | 
    
         
            +
            # config/routes.rb in your main Rails app
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       147 
153 
     | 
    
         
             
            require 'rails_drivers/routes'
         
     | 
| 
       148 
154 
     | 
    
         | 
| 
       149 
155 
     | 
    
         
             
            # This can go before or after your application's route definitions
         
     | 
| 
       150 
156 
     | 
    
         
             
            RailsDrivers::Routes.load_driver_routes
         
     | 
| 
       151 
157 
     | 
    
         
             
            ```
         
     | 
| 
       152 
158 
     | 
    
         | 
| 
      
 159 
     | 
    
         
            +
            This will tell your main Rails app to load the `routes.rb` files generated in each of your drivers.
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
       153 
161 
     | 
    
         
             
            ### RSpec
         
     | 
| 
       154 
162 
     | 
    
         | 
| 
       155 
163 
     | 
    
         
             
            If you use RSpec with FactoryBot, add these lines to your `spec/rails_helper.rb` or `spec/spec_helper.rb`:
         
     | 
| 
         @@ -19,6 +19,19 @@ module RailsDrivers 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                # Since the extensions directory exists for organizational
         
     | 
| 
      
 23 
     | 
    
         
            +
                # purposes and does not define modules with namespace `Extention`
         
     | 
| 
      
 24 
     | 
    
         
            +
                # we need to use Zeitwerk collapse function.
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                # see https://github.com/fxn/zeitwerk#collapsing-directories
         
     | 
| 
      
 27 
     | 
    
         
            +
                if Rails::VERSION::MAJOR >= 6
         
     | 
| 
      
 28 
     | 
    
         
            +
                  initializer 'rails_drivers.autoloader.collapse' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    Rails.autoloaders.each do |loader|
         
     | 
| 
      
 30 
     | 
    
         
            +
                      loader.collapse('drivers/*/extensions')
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       22 
35 
     | 
    
         
             
                config.before_configuration { setup_paths }
         
     | 
| 
       23 
36 
     | 
    
         
             
                config.after_initialize { RailsDrivers.freeze! }
         
     | 
| 
       24 
37 
     | 
    
         
             
              end
         
     | 
    
        data/lib/rails_drivers/setup.rb
    CHANGED
    
    | 
         @@ -34,20 +34,28 @@ module RailsDrivers 
     | 
|
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                def replace_rails_paths_with_driver(driver_name)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  rails_config.autoload_paths << "#{rails_config.root}/drivers"
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       37 
39 
     | 
    
         
             
                  DRIVER_PATHS.each do |path|
         
     | 
| 
       38 
40 
     | 
    
         
             
                    rails_config.paths[path] = "drivers/#{driver_name}/#{path}"
         
     | 
| 
       39 
     | 
    
         
            -
                    rails_config.autoload_paths  
     | 
| 
      
 41 
     | 
    
         
            +
                    rails_config.autoload_paths += [
         
     | 
| 
      
 42 
     | 
    
         
            +
                      "#{rails_config.root}/drivers/#{driver_name}/lib"
         
     | 
| 
      
 43 
     | 
    
         
            +
                    ]
         
     | 
| 
       40 
44 
     | 
    
         
             
                  end
         
     | 
| 
       41 
45 
     | 
    
         
             
                end
         
     | 
| 
       42 
46 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                def add_every_driver_to_rails_paths
         
     | 
| 
      
 47 
     | 
    
         
            +
                def add_every_driver_to_rails_paths # rubocop:disable Metrics/AbcSize
         
     | 
| 
      
 48 
     | 
    
         
            +
                  rails_config.autoload_paths << "#{rails_config.root}/drivers"
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       44 
50 
     | 
    
         
             
                  Dir['drivers/*'].each do |driver|
         
     | 
| 
       45 
51 
     | 
    
         
             
                    DRIVER_PATHS.each do |path|
         
     | 
| 
       46 
52 
     | 
    
         
             
                      rails_config.paths[path] << "#{driver}/#{path}"
         
     | 
| 
       47 
53 
     | 
    
         
             
                    end
         
     | 
| 
       48 
54 
     | 
    
         | 
| 
       49 
55 
     | 
    
         
             
                    # We want to autoload driver/*/lib folders
         
     | 
| 
       50 
     | 
    
         
            -
                    rails_config.autoload_paths += [ 
     | 
| 
      
 56 
     | 
    
         
            +
                    rails_config.autoload_paths += [
         
     | 
| 
      
 57 
     | 
    
         
            +
                      "#{rails_config.root}/#{driver}/lib"
         
     | 
| 
      
 58 
     | 
    
         
            +
                    ]
         
     | 
| 
       51 
59 
     | 
    
         
             
                  end
         
     | 
| 
       52 
60 
     | 
    
         
             
                end
         
     | 
| 
       53 
61 
     | 
    
         
             
              end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,27 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rails_drivers
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Nigel Baillie
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-05-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - " 
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
19 
     | 
    
         
             
                    version: '5.2'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - " 
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '5.2'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
         @@ -70,16 +70,16 @@ dependencies: 
     | 
|
| 
       70 
70 
     | 
    
         
             
              name: webpacker
         
     | 
| 
       71 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - - " 
     | 
| 
      
 73 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       74 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 75 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       76 
76 
     | 
    
         
             
              type: :development
         
     | 
| 
       77 
77 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
78 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - " 
     | 
| 
      
 80 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       81 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 82 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       83 
83 
     | 
    
         
             
            description: Like Rails Engines, but without the friction. Your Rails app can't access
         
     | 
| 
       84 
84 
     | 
    
         
             
              them, and they can't access each other.
         
     | 
| 
       85 
85 
     | 
    
         
             
            email:
         
     |