6.3.0 (Apr 30, 2019) - Added Dynamic Configurations support through two new methods that mimick the regular ones, changing the type of what is returned. - get_treatment_with_config: Same as get_treatment but returning the treatment with it's config. - get_treatments_with_config: Same as get_treatments, but instead of a map of string it returns a map of treatments with config. - Added configs to SplitViews returned by the manager module. - Updated localhost mode. Now besides supporting the old text files with `.split` extension (to be deprecated soon), we support YAML (.yaml/.yml) files where you can define configurations for your treatments and also whitelisted keys. Read more in our docs! 6.2.0 (Mar 7th, 2019) - Reworked SplitClient#destroy to ensure events, impressions and metrics are sent to Split backend when called - Ensured destroy is called when keyboard interrupts are sent to the application - Changed SDK blocker (and block_until_ready) to have no effect in consumer mode - Added support for applications tied to Faraday < 0.13 and net-http-persistent 3 using a patched Faraday adapter - Added documentation for input validation in detailed readme - Changed SplitConfig#default_features_refresh_rate value to 5 seconds 6.1.0 (Feb 8th, 2019) - Review input validation for client API methods. Better control and logging over nil, empty, numeric, and NaN parameters - Added logging when block_until_ready is not set or api key is not provided - Reviewed client API methods to log an error and return nil / empty when called after client was destroyed - Update track regex and fix an error causing a partial match to pass as a valid event_type - Add logging to #match? in matcher subclasses - Fix simplecov configuration issue causing errors in coverage calculation - Improve code coverage and decrease rubocop violation count - Fix for issue causing redis_url parameter to be ignored and Redis to always default to REDIS_ENV environment variable 6.0.1 (Jan 7th, 2019) - Fix an issue in events and impressions API calls log messages caused by a wrong variable name introduced in 6.0.0 6.0.0 (December 17th, 2018) - BREAKING CHANGE: Change format used to store impressions in repositories to reduce the number of Redis operations. It requires an update of the Split Synchronizer to >2.0.0 if you're using Redis mode. - Change `sender` and `store` classes to reuse Faraday connections, preventing issues with net-http-persistent 3.0 - Remove producer mode and make `memory + standalone` and `Redis + consumer` the only valid SDK modes. This is a breaking change - Fix `evaluator` bucket calculation when traffic allocation is set to 1% - Add cache wrapper to `segments_repository` and `splits_repository` to reduce the number of Redis operations - Add `cache_ttl` and `max_cache_size` options to setup the memory cache wrapper when using redis 5.1.2 (October 26th, 2018) - Add input validation for client API methods 5.1.1 (October 4th, 2018) - Change get_treatments so that it sends a single latency metric - Removed unused call to Redis#scan when adding latencies - Removed Redis calls on initialization when SDK is set to consumer mode - Change split_config approach so that every property has an accessor - Removed @config parameter on most initializers 5.1.0 (September 10th, 2018) - Change `get_api` to return only a Faraday response. - Add `SplitLogger` to clean up logging code and reduce the complexity in several methods. 5.0.3 (August 13th, 2018) - Add `impressions_bulk_size` option to set the max number of impressions to be sent to the Split backend on each post. 5.0.2 (July 31st, 2018) - Prevents the impression thread from being started if a listener is not in place 5.0.1 (July 19th, 2018) - Adds stop! method to the factory for gracefully stopping the SDK. 5.0.0 (May 18th, 2018) - Fix bug where the sdk picked the wrong hashing algo. This is a breaking change. 4.5.2 (May 16th, 2018) - do not return control when a split has custom attr and I don't pass attributes to get_treatment 4.5.1 (Mar 23rd, 2018) - Fix Forwardable load issue - Fix native extension path issue - Add .jar executable to the gem 4.5.0 (Mar 2nd, 2018) - Move MurmurHash3 implementation inside the gem - Add native Java MurmurHash3 implementation -> now support JRuby 4.4.0 (Feb 5th, 2018) - Add track API 4.3.3 (Feb 22th, 2018) - Allow usage of Redis >= 3.2, not only ~> 3.2 4.3.2 (Dec 19th, 2017) - Add DEFINITION_NOT_FOUND and rename NO_RULE_MATCHED labels 4.3.1 (Nov 10th, 2017) - Do not throw exception when storing impressions on reids and it is not available. Returns CONTROL instead. 4.3.0 (Oct 13th, 2017) - Add impression listener - Add support for client shutdown (destroy()) - Add "time" to the routed impressions - Add support to apply attribute matcher to the traffic type - Add support for string matchers to match on matching keys 4.2.3 (August 4, 2017) - Use ENV vars in producer 4.2.2 (July 28, 2017) - Fix treatments array in SplitManager 4.2.1 (July 20, 2017) - Coerce string to regexp for Regexp matcher 4.2.0 (July 18, 2017) - Add new boolean/regexp matchers - Add support for split dependency on other splits - Pass bucketing_key to `match?` method - Fix IP address fetching - Remove unneeded dependencies (faraday_middleware, faraday-http-cache) 4.1.0 (April 16, 2017) - Add new string/set matchers - Use Rails logger if available. Now we do not pollute STDOUT by default 4.0.0 - Add support for murmur3 algo - Optimize memory usage 3.3.0 - Add support for traffic allocation 3.2.4 - Fix Faraday compability issue (now compatible with Faraday 0.8.9) - Provide an interface to run SplitAdapter(start and resume), can be used to resurrect threads in Unicorn and Passenger servers - Allow passing non-string values to get_treatment/get_treatments - Better logging when returning CONTROL and label:Exception as well as when restarting threads - Add exception logging when failed to clear impressions keys or fetch impressions keys - Fix Redis naming issues (key_name -> keyName) - Fix negation matcher. Negation had not effect and was ignored. 3.2.3 - Fix Redis namespace issue to align with the spec - Allocate less memory by not creating Split model to check if Split is archived 3.2.2 - Fix issue when segment_store was never invoked 3.2.0 - Add impression labeling 3.1.3 - Refactor SplitFactory - split it into separate mangers and client classes - Refactor Utilities to comply style guide - Allow to store block until ready flag in Redis - rescue exception when posting impressions threads failed to prevent it to die 3.1.2 - Fix issue with complex key where get_treatment and get_treatments return different values. 3.1.1 - Fix variable not found when posting impression - Fix infinite loop when posting impression if there is a network glitch 3.1.0 - Add RedisAdapter - adds manager.split_names() - add impressions_queue_size to prevent memory leak when Threads pauses due to 'smart' fork. - do not report latencies for get_treatment is array is all zeros - Fix deduplication problem when posting impressions - Change in how factory is construct. - Detach implementation for local factory and regular one. 3.0.3 - Fix nil ref in manager 3.0.2 - add ability to provide different bucketing/matching keys 3.0.1 - fix segments not deleting from the cache 3.0.0 - add new caching interface - add replaceable adapters to store cache in - add first cache adapter: MemoryAdapter - refactoring 2.0.1 - Supress warnings cause by Net::HTTP when it already exists. 2.0.0 - Add Factory for creation of Client and Manager interface. 1.0.4 - added support for AND combiner on conditions - added events_uri as config param which defines the metrics post url - updated metrics post default endpoint to be https://events.split.io/api/ 1.0.3 - fixed refresh rate intervals issue - fixed datetime bug for split definitions created directly from api 1.0.2 - created between_matcher, equal_to_matcher, greater_than_or_equal_to_matcher, less_than_or_equal_to_matcher to support attributes - refactored whitelist_matcher to support attributes - tweaked to drop analytics data if the POST get an error response - added condition to return CONTROL on the deleted features 1.0.1 - .splits to .split for local env - isTreatment was removed from the API. 1.0.0 - Support multivariate treatment