I have the following contract and I would like to somehow set apikey
to default to whatever is set in ENV.fetch('MY_ENV') so that users don't have to pass apikey
param to every contract. I'd like it be injected automatically somehow if possible.
require 'dry-validation'
class BaseContract < Dry::Validation::Contract
params do
required(:apikey).value(:string)
end
rule(:apikey) do
key.failure("must provide 'apikey'. Please set 'TICKETMASTER_API_KEY' in your environment")
end
end
class Event < BaseContract
params do
required(:id).value(:string)
end
end
event = Event.new
event.call(id: '123') # <= I'd like :apikey to be automatically set here
Is it possible?