The following are lists of the notable changes included with each release.
This is intended to help keep people informed about notable changes between
versions, as well as provide a rough history. Each item is prefixed with
one of the following labels: Added, Changed, Deprecated,
Removed, Fixed, Security. We also use Semantic Versioning
to manage the versions of this gem so
that you can set version constraints properly.
- WIP
v1.0.2 – 2017-09-14
Added:BatchLoader#inspectmethod because of Pry, which swallows errors.
# Before:
require 'pry'
binding.pry
pry(main)> result = BatchLoader.for(1).batch { |ids, loader| raise "Oops" };
pry(main)> result # Pry called result.inspect and swallowed the "Oops" error
# => #<BatchLoader:0x8>
pry(main)> result.id
# => NoMethodError: undefined method `id' for nil:NilClass# After:
require 'pry'
binding.pry
pry(main)> result = BatchLoader.for(1).batch { |ids, loader| raise "Oops" };
pry(main)> result
# => #<BatchLoader:0x140653946335160>
pry(main)> result.id
# => RuntimeError: OopsAdded: benchmarks.Fixed: cachingnils for not loaded values only after successful#batchexecution.Changed: internal implementation with RubyForwardable, don't delegate methods likeobject_idand__send__.
v1.0.1 – 2017-09-03
Fixed: loadingBatchLoaderby requiringSet.
v1.0.0 – 2017-08-21
Removed:BatchLoader.sync!andBatchLoader#sync. Now syncing is done implicitly when you call any method on the lazy object.
def load_user(user_id)
BatchLoader.for(user_id).batch { ... }
end
# Before:
users = [load_user(1), load_user(2), load_user(3)]
puts BatchLoader.sync!(users) # or users.map!(&:sync)# After:
users = [load_user(1), load_user(2), load_user(3)]
puts usersRemoved:BatchLoader#load. Useloaderlambda instead:
# Before:
BatchLoader.for(user_id).batch do |user_ids, batch_loader|
user_ids.each { |user_id| batch_loader.load(user_id, user_id) }
end# After:
BatchLoader.for(user_id).batch do |user_ids, loader|
user_ids.each { |user_id| loader.call(user_id, user_id) }
endChanged: useBatchLoader::GraphQLin GraphQL schema:
# Before:
Schema = GraphQL::Schema.define do
# ...
lazy_resolve BatchLoader, :sync
end# After:
Schema = GraphQL::Schema.define do
# ...
use BatchLoader::GraphQL
endv0.3.0 – 2017-08-03
Added:BatchLoader::Executor.clear_currentto clear cache manually.Added: tests and description how to use with GraphQL.
v0.2.0 – 2017-08-02
Added:cache: falseoption to disable caching for resolved values.Added:BatchLoader::Middlewareto clear cache between Rack requests.Added: more docs and tests.
v0.1.0 – 2017-07-31
Added: initial functional version.