stimpack 1.0.0.alpha5 → 1.0.0.alpha6
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/lib/stimpack.rb +5 -16
- data/lib/stimpack/integrations.rb +2 -3
- data/lib/stimpack/integrations/factory_bot.rb +3 -3
- data/lib/stimpack/integrations/rails.rb +30 -0
- data/lib/stimpack/integrations/rspec.rb +2 -2
- data/lib/stimpack/pack.rb +51 -0
- data/lib/stimpack/pack/configuration.rb +25 -0
- data/lib/stimpack/packs.rb +19 -20
- data/lib/stimpack/railtie.rb +2 -6
- data/lib/stimpack/stim.rb +16 -7
- data/lib/stimpack/version.rb +1 -1
- metadata +8 -6
- data/lib/stimpack/settings.rb +0 -33
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f7e4f58a5817580fd238b6a209d51565f992d7c39ade6003338d168c2a52235b
         | 
| 4 | 
            +
              data.tar.gz: 372c732e00ab4fb1c301e8c44ff483954c8fd9864166712e9a42dff124d9bfb8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 03fbcedb9c236fe384c124a7ca8f923a1717862d648f134a5954960136b33e2297b2c803e7335af22fe0cc8212e8420cdac1131618c5abfdb353975550e96c3c
         | 
| 7 | 
            +
              data.tar.gz: 107de7c60b5dc14f02196bc04df5ea933122038a0fae17fac9a144ecfc9b0e22a3ede60cd28699061475771bcc056bf3c26b9df7620b47b7a2d54022e9c28f8d
         | 
    
        data/lib/stimpack.rb
    CHANGED
    
    | @@ -5,36 +5,25 @@ module Stimpack | |
| 5 5 | 
             
              extend ActiveSupport::Autoload
         | 
| 6 6 |  | 
| 7 7 | 
             
              autoload :Integrations
         | 
| 8 | 
            +
              autoload :Pack
         | 
| 8 9 | 
             
              autoload :Packs
         | 
| 9 10 | 
             
              autoload :Railtie
         | 
| 10 | 
            -
              autoload :Settings
         | 
| 11 11 | 
             
              autoload :Stim
         | 
| 12 12 |  | 
| 13 13 | 
             
              class Error < StandardError; end
         | 
| 14 14 |  | 
| 15 15 | 
             
              class << self
         | 
| 16 | 
            -
                def  | 
| 17 | 
            -
                  @started = @started ? return : true
         | 
| 18 | 
            -
             | 
| 16 | 
            +
                def load(app)
         | 
| 19 17 | 
             
                  Packs.resolve
         | 
| 20 18 |  | 
| 21 | 
            -
                   | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
                def finalize!
         | 
| 25 | 
            -
                  @finalized = @finalized ? return : true
         | 
| 19 | 
            +
                  Integrations::Rails.install(app)
         | 
| 20 | 
            +
                  Integrations::FactoryBot.install(app)
         | 
| 21 | 
            +
                  Integrations::RSpec.install(app)
         | 
| 26 22 | 
             
                end
         | 
| 27 23 |  | 
| 28 24 | 
             
                def [](name)
         | 
| 29 25 | 
             
                  Packs[name.to_s]
         | 
| 30 26 | 
             
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                private
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                def install_integrations
         | 
| 35 | 
            -
                  Integrations::FactoryBot.install
         | 
| 36 | 
            -
                  Integrations::RSpec.install
         | 
| 37 | 
            -
                end
         | 
| 38 27 | 
             
              end
         | 
| 39 28 | 
             
            end
         | 
| 40 29 |  | 
| @@ -2,9 +2,8 @@ require "active_support" | |
| 2 2 |  | 
| 3 3 | 
             
            module Stimpack
         | 
| 4 4 | 
             
              module Integrations
         | 
| 5 | 
            -
                extend ActiveSupport::Autoload
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                autoload :RSpec, "stimpack/integrations/rspec"
         | 
| 8 5 | 
             
                autoload :FactoryBot, "stimpack/integrations/factory_bot"
         | 
| 6 | 
            +
                autoload :Rails, "stimpack/integrations/rails"
         | 
| 7 | 
            +
                autoload :RSpec, "stimpack/integrations/rspec"
         | 
| 9 8 | 
             
              end
         | 
| 10 9 | 
             
            end
         | 
| @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            module Stimpack
         | 
| 2 2 | 
             
              module Integrations
         | 
| 3 3 | 
             
                class FactoryBot
         | 
| 4 | 
            -
                  def self.install
         | 
| 5 | 
            -
                    return unless  | 
| 4 | 
            +
                  def self.install(app)
         | 
| 5 | 
            +
                    return unless app.config.respond_to?(:factory_bot)
         | 
| 6 6 |  | 
| 7 7 | 
             
                    Packs.each do |pack|
         | 
| 8 | 
            -
                       | 
| 8 | 
            +
                      app.config.factory_bot.definition_file_paths << pack.relative_path.join("spec/factories").to_s
         | 
| 9 9 | 
             
                    end
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stimpack
         | 
| 4 | 
            +
              module Integrations
         | 
| 5 | 
            +
                class Rails
         | 
| 6 | 
            +
                  PATHS = %w(
         | 
| 7 | 
            +
                    app
         | 
| 8 | 
            +
                    app/controllers
         | 
| 9 | 
            +
                    app/channels
         | 
| 10 | 
            +
                    app/helpers
         | 
| 11 | 
            +
                    app/models
         | 
| 12 | 
            +
                    app/mailers
         | 
| 13 | 
            +
                    app/views
         | 
| 14 | 
            +
                    lib
         | 
| 15 | 
            +
                    lib/tasks
         | 
| 16 | 
            +
                    config
         | 
| 17 | 
            +
                    config/locales
         | 
| 18 | 
            +
                    config/initializers
         | 
| 19 | 
            +
                  ).freeze
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def self.install(app)
         | 
| 22 | 
            +
                    Packs.each do |pack|
         | 
| 23 | 
            +
                      PATHS.each do |path|
         | 
| 24 | 
            +
                        app.paths[path] << pack.path.join(path)
         | 
| 25 | 
            +
                      end
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            module Stimpack
         | 
| 2 2 | 
             
              module Integrations
         | 
| 3 3 | 
             
                class RSpec
         | 
| 4 | 
            -
                  def self.install
         | 
| 4 | 
            +
                  def self.install(app)
         | 
| 5 5 | 
             
                    return unless defined?(::RSpec)
         | 
| 6 6 |  | 
| 7 7 | 
             
                    Packs.each do |pack|
         | 
| 8 | 
            -
                      ::RSpec.configuration.pattern.concat(",#{pack. | 
| 8 | 
            +
                      ::RSpec.configuration.pattern.concat(",#{pack.relative_path.join("spec/**/*_spec.rb")}")
         | 
| 9 9 | 
             
                    end
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stimpack
         | 
| 4 | 
            +
              class Pack
         | 
| 5 | 
            +
                autoload :Configuration, "stimpack/pack/configuration"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                attr_reader :name
         | 
| 8 | 
            +
                attr_reader :path
         | 
| 9 | 
            +
                attr_reader :engine
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def self.root
         | 
| 12 | 
            +
                  @root ||= Rails.root.join("packs")
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize(path)
         | 
| 16 | 
            +
                  @path = path
         | 
| 17 | 
            +
                  @name = path.relative_path_from(self.class.root)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  if config.engine?
         | 
| 20 | 
            +
                    @engine = create_engine
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def relative_path
         | 
| 25 | 
            +
                  @relative_path ||= path.relative_path_from(Rails.root)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def config
         | 
| 29 | 
            +
                  @config ||= Configuration.new(self)
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                private
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                def create_engine
         | 
| 35 | 
            +
                  namespace = create_namespace(name)
         | 
| 36 | 
            +
                  stim = Stim.new(self, namespace)
         | 
| 37 | 
            +
                  namespace.const_set("Engine", Class.new(Rails::Engine)).include(stim)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def create_namespace(name)
         | 
| 41 | 
            +
                  namespace = ActiveSupport::Inflector.camelize(name)
         | 
| 42 | 
            +
                  namespace.split("::").reduce(Object) do |base, mod|
         | 
| 43 | 
            +
                    if base.const_defined?(mod)
         | 
| 44 | 
            +
                      base.const_get(mod)
         | 
| 45 | 
            +
                    else
         | 
| 46 | 
            +
                      base.const_set(mod, Module.new)
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stimpack
         | 
| 4 | 
            +
              class Pack
         | 
| 5 | 
            +
                class Configuration
         | 
| 6 | 
            +
                  FILE = "package.yml"
         | 
| 7 | 
            +
                  KEY = "metadata"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def initialize(pack)
         | 
| 10 | 
            +
                    @pack = pack
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def engine
         | 
| 14 | 
            +
                    data.fetch("engine", false)
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                  alias_method :engine?, :engine
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def data
         | 
| 21 | 
            +
                    @data ||= YAML.load_file(@pack.path.join(FILE)).fetch(KEY, {}).freeze
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
    
        data/lib/stimpack/packs.rb
    CHANGED
    
    | @@ -1,32 +1,30 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require "active_support"
         | 
| 2 4 | 
             
            require "pathname"
         | 
| 3 5 | 
             
            require "rails"
         | 
| 4 6 |  | 
| 5 7 | 
             
            module Stimpack
         | 
| 6 8 | 
             
              module Packs
         | 
| 7 | 
            -
                 | 
| 8 | 
            -
                PACK_CLASS = "Pack".freeze
         | 
| 9 | 
            +
                PACK_CLASS = "Pack"
         | 
| 9 10 |  | 
| 10 11 | 
             
                class << self
         | 
| 11 12 | 
             
                  def resolve
         | 
| 12 | 
            -
                     | 
| 13 | 
            -
             | 
| 14 | 
            -
                      create(path.relative_path_from(PATH).to_s, path.expand_path)
         | 
| 15 | 
            -
                    end
         | 
| 16 | 
            -
                  end
         | 
| 13 | 
            +
                    # Gather all the directories with package config files.
         | 
| 14 | 
            +
                    paths = filter(Pack.root.glob("**/#{Pack::Configuration::FILE}").map(&:dirname).sort)
         | 
| 17 15 |  | 
| 18 | 
            -
             | 
| 19 | 
            -
                     | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
                     | 
| 16 | 
            +
                    # Create thes packs.
         | 
| 17 | 
            +
                    paths.each do |path|
         | 
| 18 | 
            +
                      pack = Pack.new(path)
         | 
| 19 | 
            +
                      @packs[pack.name] = pack
         | 
| 20 | 
            +
                    end
         | 
| 23 21 | 
             
                  end
         | 
| 24 22 |  | 
| 25 23 | 
             
                  def find(path)
         | 
| 26 24 | 
             
                    path = "#{path}/"
         | 
| 27 25 |  | 
| 28 26 | 
             
                    @packs.values.find do |pack|
         | 
| 29 | 
            -
                      path.start_with?("#{pack. | 
| 27 | 
            +
                      path.start_with?("#{pack.path}/")
         | 
| 30 28 | 
             
                    end
         | 
| 31 29 | 
             
                  end
         | 
| 32 30 |  | 
| @@ -40,13 +38,14 @@ module Stimpack | |
| 40 38 |  | 
| 41 39 | 
             
                  private
         | 
| 42 40 |  | 
| 43 | 
            -
                  def  | 
| 44 | 
            -
                     | 
| 45 | 
            -
                     | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
                       | 
| 49 | 
            -
                         | 
| 41 | 
            +
                  def filter(paths)
         | 
| 42 | 
            +
                    # Reject all paths that are nested since they might be just packwerk
         | 
| 43 | 
            +
                    # packages instead of packs.
         | 
| 44 | 
            +
                    paths.reject do |path|
         | 
| 45 | 
            +
                      path = "#{path}/"
         | 
| 46 | 
            +
                      paths.any? do |other_path|
         | 
| 47 | 
            +
                        other_path = "#{other_path}/"
         | 
| 48 | 
            +
                        path != other_path && path.start_with?(other_path)
         | 
| 50 49 | 
             
                      end
         | 
| 51 50 | 
             
                    end
         | 
| 52 51 | 
             
                  end
         | 
    
        data/lib/stimpack/railtie.rb
    CHANGED
    
    | @@ -2,12 +2,8 @@ require "rails" | |
| 2 2 |  | 
| 3 3 | 
             
            module Stimpack
         | 
| 4 4 | 
             
              class Railtie < Rails::Railtie
         | 
| 5 | 
            -
                config.before_configuration do
         | 
| 6 | 
            -
                  Stimpack. | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                config.after_initialize do
         | 
| 10 | 
            -
                  Stimpack.finalize!
         | 
| 5 | 
            +
                config.before_configuration do |app|
         | 
| 6 | 
            +
                  Stimpack.load(app)
         | 
| 11 7 | 
             
                end
         | 
| 12 8 | 
             
              end
         | 
| 13 9 | 
             
            end
         | 
    
        data/lib/stimpack/stim.rb
    CHANGED
    
    | @@ -1,19 +1,28 @@ | |
| 1 1 | 
             
            module Stimpack
         | 
| 2 2 | 
             
              class Stim < Module
         | 
| 3 | 
            -
                def initialize( | 
| 4 | 
            -
                  @ | 
| 3 | 
            +
                def initialize(pack, namespace)
         | 
| 4 | 
            +
                  @pack = pack
         | 
| 5 5 | 
             
                  @namespace = namespace
         | 
| 6 6 | 
             
                  super()
         | 
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 9 | 
             
                def included(engine)
         | 
| 10 | 
            -
                  engine. | 
| 11 | 
            -
                  engine.settings = @settings
         | 
| 12 | 
            -
                  engine.called_from = @settings.path
         | 
| 10 | 
            +
                  engine.called_from = @pack.path
         | 
| 13 11 | 
             
                  engine.extend(ClassMethods)
         | 
| 12 | 
            +
                  engine.isolate_namespace(@namespace)
         | 
| 14 13 |  | 
| 15 | 
            -
                   | 
| 16 | 
            -
             | 
| 14 | 
            +
                  # Set all of these paths to nil because we want the Rails integration to take
         | 
| 15 | 
            +
                  # care of them. The purpose of this Engine is really just for the namespace
         | 
| 16 | 
            +
                  # isolation.
         | 
| 17 | 
            +
                  (Stimpack::Integrations::Rails::PATHS +
         | 
| 18 | 
            +
                    # In addition to the paths we've delegated to the main app, we don't allow
         | 
| 19 | 
            +
                    # Engine Packs to have various capabilities.
         | 
| 20 | 
            +
                    %w(
         | 
| 21 | 
            +
                      config/environments
         | 
| 22 | 
            +
                      db/migrate
         | 
| 23 | 
            +
                    )
         | 
| 24 | 
            +
                  ).uniq.each do |path|
         | 
| 25 | 
            +
                    engine.paths[path] = nil
         | 
| 17 26 | 
             
                  end
         | 
| 18 27 | 
             
                end
         | 
| 19 28 |  | 
    
        data/lib/stimpack/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: stimpack
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0.0. | 
| 4 | 
            +
              version: 1.0.0.alpha6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ngan Pham
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-03-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -65,10 +65,12 @@ files: | |
| 65 65 | 
             
            - lib/stimpack.rb
         | 
| 66 66 | 
             
            - lib/stimpack/integrations.rb
         | 
| 67 67 | 
             
            - lib/stimpack/integrations/factory_bot.rb
         | 
| 68 | 
            +
            - lib/stimpack/integrations/rails.rb
         | 
| 68 69 | 
             
            - lib/stimpack/integrations/rspec.rb
         | 
| 70 | 
            +
            - lib/stimpack/pack.rb
         | 
| 71 | 
            +
            - lib/stimpack/pack/configuration.rb
         | 
| 69 72 | 
             
            - lib/stimpack/packs.rb
         | 
| 70 73 | 
             
            - lib/stimpack/railtie.rb
         | 
| 71 | 
            -
            - lib/stimpack/settings.rb
         | 
| 72 74 | 
             
            - lib/stimpack/stim.rb
         | 
| 73 75 | 
             
            - lib/stimpack/version.rb
         | 
| 74 76 | 
             
            homepage: https://github.com/Gusto/stimpack
         | 
| @@ -77,7 +79,7 @@ metadata: | |
| 77 79 | 
             
              homepage_uri: https://github.com/Gusto/stimpack
         | 
| 78 80 | 
             
              source_code_uri: https://github.com/Gusto/stimpack
         | 
| 79 81 | 
             
              changelog_uri: https://github.com/Gusto/stimpack/blob/master/CHANGELOG.md
         | 
| 80 | 
            -
            post_install_message: | 
| 82 | 
            +
            post_install_message:
         | 
| 81 83 | 
             
            rdoc_options: []
         | 
| 82 84 | 
             
            require_paths:
         | 
| 83 85 | 
             
            - lib
         | 
| @@ -93,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 93 95 | 
             
                  version: 1.3.1
         | 
| 94 96 | 
             
            requirements: []
         | 
| 95 97 | 
             
            rubygems_version: 3.1.2
         | 
| 96 | 
            -
            signing_key: | 
| 98 | 
            +
            signing_key:
         | 
| 97 99 | 
             
            specification_version: 4
         | 
| 98 100 | 
             
            summary: A Rails helper to package your code.
         | 
| 99 101 | 
             
            test_files: []
         | 
    
        data/lib/stimpack/settings.rb
    DELETED
    
    | @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Stimpack
         | 
| 4 | 
            -
              class Settings
         | 
| 5 | 
            -
                PACK_CONFIG = "package.yml"
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                attr_reader :name
         | 
| 8 | 
            -
                attr_reader :path
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def initialize(name, path)
         | 
| 11 | 
            -
                  @name = name
         | 
| 12 | 
            -
                  @path = path
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def relative_path
         | 
| 16 | 
            -
                  @path.relative_path_from(Rails.root)
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def engine
         | 
| 20 | 
            -
                  config.fetch("engine", false)
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
                alias_method :engine?, :engine
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                private
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                def config
         | 
| 27 | 
            -
                  @config ||= begin
         | 
| 28 | 
            -
                    package_config = YAML.load_file(path.join(PACK_CONFIG))
         | 
| 29 | 
            -
                    package_config.fetch("metadata", {}).freeze
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         |