Event driven Rails application with Rails Event Store

New Rails application with Rails Event Store gem
Icons/chart bar
Used 13 times
Created by
A Arkency

Usage
Just use provided application template and run:
rails new -m https://railseventstore.org/new YOUR-APP-NAME

Run this command in your Rails app directory in the terminal:

rails app:template LOCATION="https://railsbytes.com/script/Vqqsn4"
Template Source

Review the code before running this template on your machine.

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
Comments

Sign up or Login to leave a comment.