dry-container/CHANGELOG.md

4.9 KiB

unreleased

Added

  • Add a warning about deprecation of the gem (via #89) (@solnic)

Compare v0.11.0...master

0.11.0 2022-09-16

Changed

  • dry-configurable will be used whenever it is in the $LOAD_PATH (see dry-rb/dry-system#247 for more context) (@solnic)

Compare v0.10.1...v0.11.0

0.10.1 2022-07-29

Changed

  • Make DidYouMean integration optional (via #86) (@jbourassa)

Compare v0.10.0...v0.10.1

0.10.0 2022-07-10

⚠️ Notice that dry-container no longer depends on dry-configurable. If you happen to rely on the advanced configurable functionality, add dry-configurable as a dependency and require it before requiring dry-container.

Added

  • Accept block given to #merge (via #83) (@timriley)

Changed

  • [BREAKING] Replace dep on dry-configurable with a simple Configuration mod (see #84 for more details) (@solnic)
  • Raise KeyError for missing key, with DidYouMean integration (via #82) (@cllns)
  • Wrap FrozenError, to state that the container itself is frozen (see #74) (@cllns)

Compare v0.9.0...v0.10.0

0.9.0 2021-09-12

Changed

  • [internal] Upgraded to new setting API provided in dry-configurable 0.13.0 (@timriley in #77)

Compare v0.8.0...v0.9.0

0.8.0 2021-06-06

Changed

  • [BREAKING] Support for 2.4 and 2.5 was dropped

Compare v0.7.2...v0.8.0

0.7.2 2019-07-09

Added

  • .resolve accepts an optional fallback block, similar to how Hash#fetch works (flash-gordon)
    container.resolve('missing_key') { :fallback } # => :fallback
    
  • .decorate can (again) work with static values. Also, it can take a block instead of with (flash-gordon)
    container.register('key', 'value')
    container.decorate('key') { |v| "<'#{v}'>" }
    container.resolve('key') # => "<'value'>"
    

Compare v0.7.1...v0.7.2

0.7.1 2019-06-07

Fixed

  • Added Mixin#dup and Mixin#clone, now copies don't share underlying containers (flash-gordon)

Compare v0.7.0...v0.7.1

0.7.0 2019-02-05

Added

  • Namespace DSL resolves keys relative to the current namespace, see the corresponding changes (yuszuv)

  • Registered objects can be decorated with the following API (igor-alexandrov)

    class CreateUser
      def call(params)
        # ...
      end
    end
    container.register('create_user') { CreateUser.new }
    container.decorate('create_user', with: ShinyLogger.new)
    
    # Now subsequent resolutions will return a wrapped object
    
    container.resolve('create_user')
    # => #<ShinyLogger @obj=#<CreateUser:0x...>]>
    
  • Freezing a container now prevents further registrations (flash-gordon)

  • Internal

  • Handling container items was generalized in #34 (GabrielMalakias)

Fixed

  • Symbols are now coerced to strings when resolving stubbed dependencies (cthulhu666)

  • Stubbing keys not present in container will raise an error (flash-gordon)

    This means after upgrading you may see errors like this

    ArgumentError (cannot stub "something" - no such key in container)
    

    Be sure you register dependencies before using them. The new behavior will likely save quite a bit of time when debugging ill-configured container setups.

Changed

  • [BREAKING] Now only Ruby 2.3 and above is supported (flash-gordon)

Compare v0.6.0...v0.7.0

0.6.0 2016-12-09

Added

  • Dry::Container::Mixin#each - provides a means of seeing what all is registered in the container (jeremyf)

Fixed

  • Including mixin into a class with a custom initializer (maltoe)

Compare v0.5.0...v0.6.0

0.5.0 2016-08-31

Added

  • memoize option to #register - memoizes items on first resolve (ivoanjo)

Fixed

  • required_ruby_version set to >= 2.0.0 (artofhuman)