Open
Description
for example
policy.send_all_but(nil).to(Application)
should work.
It doesn't because it tries to convert nil to a symbol and fails.
This is handy for a case like this:
policy.send_all_but(production_job? && :ship_by_date).to(Application)
Otherwise the code looks like this:
if production_job?
policy.send_all_but(:ship_by_date).to(Application)
else
policy.send_all.to(Application)
end
# or
policy.send_all_but(*[*(production_job? && :ship_by_date)]).to(Application)
Allowing an array of symbols to be passed in might also be handy in cases as well so basically we want to flatten and compress the parameters (which is already a splat) to send_all_but
and send_only
. We use reject(&:!)
instead of compact
so that any falsy value will be removed (false as well as nil.)
module Hyperstack
class InternalPolicy
def send_all_but(*exceptions)
SendSet.new(self, exclude: exceptions.flatten.reject(&:!))
end
def send_only(*white_list)
SendSet.new(self, white_list: white_list.flatten.reject(&:!))
end
end
end