require_relative 'env' # Read Model # class Book < ActiveRecord::Base def readonly? !new_record? end after_find { readonly! } end # Event # class BookPublished < RailsEventStore::Event; end # Subscriber (to create read model) # class CreateBookModel def call(event) Book.create!(event.data) end end EventStore.subscribe(CreateBookModel.new, to: [BookPublished]) # Controller # event = BookPublished.new(data: { isbn: '001', title: 'Daring Greatly', author: 'Brene Brown' }) EventStore.publish(event, stream_name: 'books') # Stream # puts puts "#### EVENTS ####" puts "Number of events: #{EventStore.read.stream('books').of_type(BookPublished).count}" EventStore.read.stream('books').of_type(BookPublished).each do |event| puts "Event: #{event.event_id} #{event.data}" end # View # puts puts "#### BOOKS ####" Book.all.each do |book| puts book.inspect end