No commit activity in last 3 years
No release in over 3 years
Create a database trigger that keeps the most recent Statesman state in sync.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0
>= 0
~> 1.0
 Project Readme

Statesman::Trigger

This is an extension to the fantastic Statesman gem to create a database trigger to keep the most recent transition in sync on a specific column on the parent model.

Presently, it is only designed to work with PostgreSQL.

Installation

Add this line to your application's Gemfile:

gem 'statesman-trigger'

And then execute:

$ bundle

Or install it yourself as:

$ gem install statesman-trigger

Usage

Usage in a rails migration is straightforward, assuming you use the defaults:

def change
  add_column :orders, :current_state, :string, null: false, default: 'pending', index: true

  create_statesman_trigger Order, OrderTransition
end

The migration script will introspect from the provided classes.

If you want your column to be named something else:

def change
  add_column :orders, :anything_you_want, :string, null: false, default: 'pending', index: true

  create_statesman_trigger Order, OrderTransition, sync_column: :anything_you_want
end

It is highly recommended you switch your Rails application's schema dumping format to SQL (db/structure.sql rather than db/schema.rb). That's accomplished by the following line in config/application.rb:

module YourAppHere
  class Application < Rails::Application
    # Use SQL for dumping.
    config.active_record.schema_format = :sql
  end
end

Development

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

Contributing

  1. Fork it ( https://github.com/scryptmouse/statesman-trigger/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request