Strum::Pipeline

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file lib/strum/pipeline. To experiment with that code, run bin/console for an interactive prompt.

TODO: Delete this and the text above, and describe your gem

Installation

Add this line to your application's Gemfile:

gem 'strum-pipeline'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install strum-pipeline

Usage

TODO: Write usage instructions here

Development

After checking out the repo, run bin/setup to install dependencies. 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 version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/strum-pipeline.

Example

# frozen_string_literal: true

require "sneakers/runner"
require "strum/esb"
require "strum/pipeline"

# demo class
class DemoPipeline
  include Strum::Pipeline

  # changing default exchangers
  Strum::Esb.config.info_exchange = "demo.info"
  Strum::Esb.config.event_exchange = "demo.events"
  Strum::Esb.config.action_exchange = "demo.actions"
  Strum::Esb.config.notice_exchange = "demo.notice"

  # changing default redis connection
  Strum::Pipeline.config.redis_connection = { url: ENV.fetch("DEMO_REDIS_URL") }

  ttl 60
  init :event, "identity/create"
  init :event, "identity/update"
  step :action, "get/user", :demo_custom_handler
  step :action, "get/company"
  step :info, "user"

  def event_identity_create(_payload)
    storage[:counter1] = 1
    storage[:counter] = 1
    Strum::Esb::Action.call({}, :get, :user)
    # Strum::Esb::Action.({}, :get, :company)
  end

  def demo_custom_handler(_payload)
    Strum::Esb::Info.call({}, :user)
    storage[:counter2] = 2
    Strum::Pipeline::Storage[:counter] = 2
    Strum::Pipeline::Storage.list << 2
  end

  def info_user(payload)
    logger.debug payload
    storage[:counter3] = 3
    storage[:counter] = 3
  end
end

r = Sneakers::Runner.new([DemoPipeline])
r.run

Also Redis connection can be set up by env var:

PIPELINE_REDIS_HOST=127.0.0.1
PIPELINE_REDIS_PORT=6379
PIPELINE_REDIS_DB=0