Files | Admin

Notes:

Release Name: 1.0.0

Notes:
Needle Dependency Injector for Ruby
http://rubyforge.org/projects/needle

[1.0] 4 Nov 2004:
  * Logging levels may be specified more flexibly and robustly.

  * Added Container#require, to better support service libraries.

  * Added DefinitionContext#namespace_define!. DefinitionContext#namespace! is
    now an alias for that.

  * FAQ and Users Manual are complete (first draft).

[0.9] 28 Oct 2004:
  * Registry.new! is now Registry.define!

  * Added Registry.define as a class method.

  * Registry#fullname always returns nil. ServicePoint#fullname and
    Container#fullname no longer include the registry itself in the
    path.

[0.6] 21 Oct 2004:
  * Added benchmarks.

  * Removed Container#register!.

  * Added Container#define and Container#define!, and changed semantics of
    Registry#new!.

  * Service constructor blocks may accept two parameters: the container, and
    the service point itself.

  * Container#namespace (and friends) no longer acts like "mkdir -p".

  * Added QueryableMutex for detecting cycles in dependencies.

  * Changed implementation of service models to use instantiation pipelines.

  * Added many new service models (prototype_initialize, threaded,
    singleton_deferred_initialize, etc.)

  * Added Jim Weirich's "DI in Ruby" article to documentation.

[0.5] 14 Oct 2004:
  * First public release.


Changes: 2004-11-04 07:23 minam * lib/needle/container.rb: Worked around an rdoc bug that appeared when doc'ing DefinitionContext#require. (rdoc does not like documenting #require calls with variable argument lists). 2004-11-03 22:31 minam * NEWS, doc/manual/manual.yml, lib/needle/version.rb: Updated NEWS and version in preparation for 1.0 release. 2004-11-03 15:49 minam * lib/needle/container.rb: Added namespace_define! to the DefinitionContext and aliased namespace! to it. 2004-11-03 15:49 minam * doc/faq/faq.yml: Added FAQ about service libraries. 2004-11-03 15:48 minam * doc/manual/: manual.yml, parts/02_namespaces.txt, parts/libraries_creating.txt, parts/libraries_overview.txt, parts/libraries_using.txt: Added chapter on service libraries. 2004-11-03 12:16 minam * TODO, lib/needle/container.rb, test/services.rb, test/tc_container.rb: Zeroed the TODO list. Added #require as a method of Container for more easily decentralizing service configuration. 2004-11-02 18:57 minam * lib/needle/log-factory.rb, test/tc_logger.rb: LogFactory now validates option keys and level keys. Symbols and strings are accepted interchangably. 2004-11-02 18:56 minam * doc/manual/: manual.yml, parts/logging_configuration.txt, parts/logging_logfactory.txt, parts/logging_overview.txt: Added chapter on logging. 2004-11-02 11:23 minam * doc/manual/: manual.yml, parts/models_models.txt, parts/models_overview.txt, parts/models_pipelines.txt: Added chapter on service models and pipelines. 2004-11-02 09:31 minam * doc/manual/: manual.rb, manual.yml, parts/interceptors_architecture.txt, parts/interceptors_attaching.txt, parts/interceptors_custom.txt, parts/interceptors_ordering.txt, parts/interceptors_overview.txt: Added interceptors chapter and skeletons of remaining chapters. 2004-11-01 15:39 minam * test/: tc_logger.rb, pipeline/tc_collection.rb, pipeline/tc_element.rb: Fixed warnings from ambiguities due to missing parens. 2004-11-01 15:38 minam * lib/needle/lifecycle/initialize.rb: Removed warning from ambiguity due to missing parens. 2004-11-01 15:34 minam * lib/needle/thread.rb: Fixed warning due to @locking_thread being uninitialized. 2004-11-01 15:30 minam * lib/needle/log-factory.rb: Logging levels are now interpreted more flexibly, with unrecognized levels raising sane errors. 2004-11-01 15:28 minam * lib/needle/container.rb: Fixed some warnings and a documentation typo. 2004-10-29 15:09 minam * doc/faq/faq.yml: Finished the FAQ (rough draft) 2004-10-28 10:43 minam * NEWS, Rakefile, doc/manual/manual.yml, doc/manual/page.erb, doc/manual/parts/03_overview.txt: Added :faq and :pubfaq to Rakefile. Added FAQ link to manual. Fixed some minor typos in the manual. 2004-10-27 16:44 minam * doc/faq/: faq.rb, faq.yml: Added first pass at a FAQ document. 2004-10-27 15:49 minam * doc/manual/: manual.rb, manual.yml, parts/03_conventional.txt, parts/03_locator.txt, parts/03_overview.txt, parts/04_overview.txt, parts/04_setup.txt: Added two more chapters to the manual. 2004-10-27 13:08 minam * lib/needle/version.rb: Tentative version bump to 0.9, in anticipation of release of 1.0. 2004-10-27 13:02 minam * lib/needle/container.rb, lib/needle/registry.rb, lib/needle/service-point.rb, test/tc_registry.rb, test/tc_service_point.rb, test/models/model_test.rb: Registries are now unnamed (and unnamable, in the sense that Containers can be named). This makes the result of Container#fullname and ServicePoint#fullname a bit more pleasant to look at, and understand. 2004-10-24 07:28 minam * doc/manual/parts/02_creating.txt, lib/needle/container.rb, lib/needle/version.rb, test/tc_container.rb: Tentative version bump. Updated manual. DefinitionContext now places nicely with pp. Added unit tests for namespace_define and friends. 2004-10-24 06:23 minam * example/: prototype-namespaces/driver.rb, simple/driver.rb: Changed calls to Registry.new! to Registry.define!. 2004-10-24 06:21 minam * lib/needle/registry.rb, test/tc_registry.rb, test/models/model_test.rb: Added test case for custom init option. Changed Registry.new! to Registry.define! and added Registry.define. 2004-10-21 10:13 minam * Rakefile: Removed some cruft. 2004-10-21 10:11 minam * NEWS: Updated NEWS file. 2004-10-21 10:01 minam * lib/needle/version.rb: Version bump. 2004-10-21 10:00 minam * example/custom-model/refreshable.rb, lib/needle/service-point.rb: The "refreshable" example wasn't working correctly due to a bug in the service point implementation (the options for the service point were not being passed to the pipeline elements when they were created). 2004-10-21 09:48 minam * TODO, lib/needle/container.rb, lib/needle/registry.rb, lib/needle/service-point.rb, lib/needle/lifecycle/threaded.rb, lib/needle/pipeline/collection.rb, lib/needle/pipeline/element.rb, test/tc_container.rb, test/tc_logger.rb, test/tc_registry.rb, test/tc_service_point.rb, test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb, test/lifecycle/tc_singleton.rb, test/lifecycle/tc_threaded.rb, test/models/model_test.rb, test/models/tc_prototype.rb, test/models/tc_prototype_deferred.rb, test/models/tc_prototype_deferred_initialize.rb, test/models/tc_prototype_initialize.rb, test/models/tc_singleton.rb, test/models/tc_singleton_deferred.rb, test/models/tc_singleton_deferred_initialize.rb, test/models/tc_singleton_initialize.rb, test/models/tc_threaded.rb, test/models/tc_threaded_deferred.rb, test/models/tc_threaded_deferred_initialize.rb, test/models/tc_threaded_initialize.rb, test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb: Added "threaded" pipeline element. Made service models for all combinations of [threaded,singleton,prototype] x [immediate,deferred] x [no-initialize, initialize]. Made Pipeline::Element accept the service point as a parameter instead of the container. 2004-10-18 09:27 minam * Rakefile, TODO, doc/README, doc/di-in-ruby.rdoc, doc/images/di_classdiagram.jpg: Added Jim Weirich's "DI in Ruby" article to documentation. 2004-10-17 23:58 minam * example/custom-model/refreshable.rb: Updated example to use new instantiation pipeline approach to service models. 2004-10-17 23:54 minam * TODO: Instantiation pipelines were implemented. 2004-10-17 23:53 minam * TODO, lib/needle/container.rb, lib/needle/models.rb, lib/needle/registry.rb, lib/needle/service-point.rb, lib/needle/lifecycle/deferred.rb, lib/needle/lifecycle/initialize.rb, lib/needle/lifecycle/proxy.rb, lib/needle/lifecycle/singleton.rb, lib/needle/pipeline/collection.rb, lib/needle/pipeline/element.rb, lib/needle/pipeline/interceptor.rb, test/tc_container.rb, test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb, test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb, test/lifecycle/tc_proxy.rb, test/lifecycle/tc_singleton.rb, test/models/tc_prototype.rb, test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb, test/models/tc_singleton.rb, test/models/tc_singleton_deferred.rb, test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb: HUGE CHANGE. The entire service model concept has been radically altered. Instead, the concept of "instantiation pipelines" has been implemented. This gives a LOT more flexibility, and even a small performance boost (in some areas). 2004-10-16 23:26 minam * doc/: README, manual/manual.yml, manual/parts/01_alternatives.txt: Changed the term "free software" to "open source software", to prevent confusion over FSF terminology. Added a section in the manual describing alternatives to Needle. 2004-10-16 23:15 minam * benchmarks/instantiation.rb: Added new benchmark for timing the various ways to instantiate services. 2004-10-16 07:51 minam * lib/needle/thread.rb: Copied 'thread.rb' from Copland so we have a version of mutex that can detect a thread trying to reacquire an existing lock. Changed the models and the proxy to use QueryableMutex, so that cycles in the dependency graph are reported more legibly. 2004-10-15 23:01 minam * TODO, example/prototype-namespaces/driver.rb, lib/needle/service-point.rb, test/tc_service_point.rb: Instantiating a service point now sends an optional second parameter to the constructor block. The second parameter is the service point definition itself, allowing the constructor block to reference (for example) the service point's fullname. Also, added an implementation of the "prototype namespaces" that I discussed with Christian Neukirchen (chris2) on #ruby-talk. 2004-10-15 16:17 minam * Rakefile, doc/manual/parts/02_creating.txt, doc/manual/parts/02_namespaces.txt, doc/manual/parts/02_services.txt, example/test.rb, example/calc/calc.rb, example/calc/driver.rb, example/custom-model/driver.rb, example/simple/driver.rb, lib/needle/container.rb, lib/needle/registry.rb, lib/needle/service-point.rb, test/tc_container.rb, test/tc_registry.rb: World-shattering, API-breaking changes. Specifically: Container#register! went away, and is now called Container#define!. Added Container#define. Renamed Container::RegistrationContext to be Container::DefinitionContext. Added Container::DefinitionContext#this_container. Fixed/removed/added unit tests. Fixed documentation to conform with new changes. Fixed examples to conform with new changes. Moved "example/test.rb" to "example/simple/driver.rb". Made Rakefile automatically run examples and benchmarks before packaging to ensure that they work. 2004-10-15 11:10 minam * Rakefile, needle.gemspec, benchmarks/instantiability.rb, benchmarks/interceptors.rb, benchmarks/interceptors2.rb: Added benchmarks. "rake benchmark" now runs the benchmarks. 2004-10-14 21:40 minam * Rakefile, needle.gemspec: Rakefile now checks for success of test cases before packaging. Also, NEWS gets packaged instead of ReleaseNotes. 2004-10-14 21:33 minam * example/custom-model/refreshable.rb: Made warnings (ruby -w) go away. 2004-10-14 21:32 minam * NEWS: Updated NEWS file. 2004-10-14 21:30 minam * doc/: README, manual/index.erb, manual/manual.rb, manual/manual.yml: Changed index page of manual so that all relevant web sites relating to Needle can be displayed. Added sites to the README as well. 2004-10-14 16:27 minam * doc/manual/manual.css, doc/manual/manual.yml, doc/manual/parts/02_namespaces.txt, doc/manual/parts/02_services.txt, lib/needle/version.rb: Minor tweakage. 2004-10-14 16:16 minam * doc/manual/: manual.yml, parts/02_creating.txt, parts/02_namespaces.txt, parts/02_overview.txt, parts/02_services.txt: Rough draft of the "Registry" chapter, and combined a few prospective chapters into the Registry chapter. 2004-10-14 15:00 minam * TODO, lib/needle/log-factory.rb: Pared down the TODO list, and made log-factory not close device if it is stdout or stderr. 2004-10-14 14:20 minam * Rakefile: Added :prepackage task for helping maintainer remember to update versions, NEWS, and so forth before releasing. 2004-10-14 14:06 minam * example/calc/calc.rb, example/calc/driver.rb, example/custom-model/driver.rb, example/custom-model/refreshable.rb, lib/needle/container.rb, lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb, lib/needle/log-factory.rb, lib/needle/service-point.rb, test/tc_container.rb, test/tc_logger.rb: Updated code to remove warnings when run with "ruby -w". Also, fixed examples so that they no longer use the "register_library" interfaces. Extended the custom-model example with code from Leon Breedt. 2004-10-13 20:25 minam * doc/manual/: manual.rb, manual.yml, parts/01_use_cases.txt: Added use cases to introduction of manual. 2004-10-13 20:11 minam * lib/needle.rb, lib/needle/container.rb, lib/needle/registry.rb, test/tc_container.rb: Removed the "register_library" and "require" stuff. That more properly belongs (if it belongs at all) in a layer on top of Needle. I'll try to keep Needle "lean and mean". 2004-10-13 14:23 minam * lib/: needle.rb, needle/container.rb: Tweaked documentation according to recommendations from Eivind Eklund. 2004-10-13 09:22 minam * NEWS, Rakefile, TODO, lib/needle/log-factory.rb, lib/needle/logger.rb, test/tc_logger.rb: Added a #write_to method to both Logger and LogFactory, allowing the device being written to, to be changed on the fly. Made the Rakefile clean up the generated log files after running the tests. Added a NEWS file. 2004-10-12 16:39 minam * TODO: Need better name for Container#register! 2004-10-12 16:33 minam * needle.gemspec: Added gemspec file. 2004-10-12 16:30 minam * lib/needle.rb: Error in documentation. 2004-10-12 16:25 minam * setup.rb: Added setup.rb for manual installation. 2004-10-12 16:24 minam * doc/README: Added a README. 2004-10-12 16:19 minam * Rakefile, TODO, lib/needle.rb, lib/needle/container.rb, lib/needle/errors.rb, lib/needle/include-exclude.rb, lib/needle/interceptor.rb, lib/needle/models.rb, lib/needle/registry.rb, lib/needle/service-point.rb, lib/needle/version.rb: Added RDoc documentation. Added Rakefile and TODO. 2004-10-12 13:29 minam * doc/manual/chapter.erb, doc/manual/index.erb, doc/manual/manual.css, doc/manual/manual.rb, doc/manual/page.erb, doc/manual/tutorial.erb, lib/needle/version.rb: Manual now compiles. Added version information to Needle. 2004-10-12 12:49 minam * LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY, doc/manual/manual.rb, doc/manual/manual.yml, doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt, doc/manual/parts/01_what_is_needle.txt, lib/needle.rb, lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb, lib/needle/logger.rb, lib/needle/models.rb, lib/needle/registry.rb, lib/needle/service-point.rb, example/test.rb, example/calc/calc.rb, example/calc/driver.rb, example/custom-model/driver.rb, example/custom-model/refreshable.rb, lib/needle/container.rb, lib/needle/errors.rb, lib/needle/include-exclude.rb, lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb, test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb, test/tc_interceptor_chain.rb, test/tc_logger.rb, test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb, test/models/tc_prototype.rb, test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb, test/models/tc_singleton.rb, test/models/tc_singleton_deferred.rb: Initial import 2004-10-12 12:49 minam * LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY, doc/manual/manual.rb, doc/manual/manual.yml, doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt, doc/manual/parts/01_what_is_needle.txt, lib/needle.rb, lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb, lib/needle/logger.rb, lib/needle/models.rb, lib/needle/registry.rb, lib/needle/service-point.rb, example/test.rb, example/calc/calc.rb, example/calc/driver.rb, example/custom-model/driver.rb, example/custom-model/refreshable.rb, lib/needle/container.rb, lib/needle/errors.rb, lib/needle/include-exclude.rb, lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb, test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb, test/tc_interceptor_chain.rb, test/tc_logger.rb, test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb, test/models/tc_prototype.rb, test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb, test/models/tc_singleton.rb, test/models/tc_singleton_deferred.rb: Initial revision