EventSourcery is currently being used in production by multiple apps but we haven't finalized the API yet and things are still moving rapidly. Until we release a 1.0 things may change without first being deprecated.
Add this line to your application's Gemfile:
gem 'event_sourcery-postgres'EventSourcery::Postgres.configure do |config| config.event_store_database = Sequel.connect(...) config.projections_database = Sequel.connect(...) config.write_events_function_name = 'writeEvents' config.events_table_name = :events config.aggregates_table_name = :aggregates config.callback_interval_if_no_new_events = 60 endItemAdded = EventSourcery::Event EventSourcery::Postgres.event_store.sink(ItemAdded.new(aggregate_id: uuid, body: { }})) EventSourcery::Postgres.event_store.get_next_from(0).each do |event| puts event.inspect endclass ItemProjector include EventSourcery::Postgres::Projector table :items do column :item_uuid, 'UUID NOT NULL' column :title, 'VARCHAR(255) NOT NULL' end project ItemAdded do |event| table(:items).insert(item_uuid: event.aggregate_id, title: event.body.fetch('title')) end end class UserEmailer include EventSourcery::Postgres::Reactor emits_events SignUpEmailSent process UserSignedUp do |event| emit_event SignUpEmailSent.new(user_id: event.aggregate_id) do UserMailer.signed_up(...).deliver end end end EventSourcery::EventProcessing::ESPRunner.new( event_processors: [item_projector, user_emailer], event_store: EventSourcery::Postgres.config.event_store, stop_on_failure: true, ).start!After checking out the repo, run bin/setup to install dependencies. (This will install dependencies and recreate the test database.) Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install.
To release a new version:
- Update the version number in
lib/event_sourcery/postgres/version.rb - Get this change onto main via the normal PR process
- Run
bundle exec rake release, this will create a git tag for the version, push tags up to GitHub, and upload the gem to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/envato/event_sourcery-postgres.