Copy and paste this code into your terminal
DISCLAIMER: You should always review templates before running them. By running the template, you are agreeing to the terms of use.
The contents of this script as show. Any updates will be reflected in the below code and the snippet.
gem 'rails_event_store', '~> 1.0.0'
after_bundle do
initializer 'rails_event_store.rb', <<~CODE
require 'rails_event_store'
require 'aggregate_root'
require 'arkency/command_bus'
Rails.configuration.to_prepare do
Rails.configuration.event_store = RailsEventStore::Client.new
Rails.configuration.command_bus = Arkency::CommandBus.new
AggregateRoot.configure do |config|
config.default_event_store = Rails.configuration.event_store
end
# Subscribe event handlers below
# Rails.configuration.event_store.tap do |store|
# store.subscribe(InvoiceReadModel.new, to: [InvoicePrinted])
# store.subscribe(->(event) { SendOrderConfirmation.new.call(event) }, to: [OrderSubmitted])
# store.subscribe_to_all_events(->(event) { Rails.logger.info(event.type) })
# end
# Register command handlers below
# Rails.configuration.command_bus.tap do |bus|
# bus.register(PrintInvoice, Invoicing::OnPrint.new)
# bus.register(SubmitOrder, ->(cmd) { Ordering::OnSubmitOrder.new.call(cmd) })
# end
end
CODE
generate 'rails_event_store_active_record:migration'
rails_command 'db:migrate'
route "mount RailsEventStore::Browser => '/res' if Rails.env.development?"
end
A place where you can thank the author, post problems, give constructive feedback, etc. Be nice!