/schema_plus_enums

Support for enum data types in ActiveRecord

Primary LanguageRubyMIT LicenseMIT

Gem Version Build Status Coverage Status

SchemaPlus::Enums

SchemaPlus::Enums provides support for enum data types in ActiveRecord. Currently the support is limited to defining enum data types, for PostgreSQL only.

SchemaPlus::Enums is part of the SchemaPlus family of Ruby on Rails ActiveRecord extension gems.

Installation

As usual:

gem "schema_plus_enums"                # in a Gemfile
gem.add_dependency "schema_plus_enums" # in a .gemspec

Compatibility

SchemaPlus::Enums is tested on:

  • ruby 2.2.7 with activerecord 4.2, using postgresql
  • ruby 2.2.7 with activerecord 5.0, using postgresql
  • ruby 2.2.7 with activerecord 5.1, using postgresql
  • ruby 2.3.4 with activerecord 4.2, using postgresql
  • ruby 2.3.4 with activerecord 5.0, using postgresql
  • ruby 2.3.4 with activerecord 5.1, using postgresql
  • ruby 2.4.1 with activerecord 4.2, using postgresql
  • ruby 2.4.1 with activerecord 5.0, using postgresql
  • ruby 2.4.1 with activerecord 5.1, using postgresql

Usage

In a migration, an enum can be created:

create_enum :color, 'red', 'green', 'blue' # default schema is 'public'
create_enum :color, 'cyan', 'magenta', 'yellow', 'black', schema: 'cmyk'

And can be altered: (added a new value)

alter_enum :color, 'black'
alter_enum :color, 'purple', after: 'red'
alter_enum :color, 'pink', before: 'purple'
alter_enum :color, 'white', schema: 'public'

And can be dropped:

drop_enum :color
drop_enum :color, schema: 'cmyk'

Release Notes

  • 0.1.6 - Update dependencies to include AR 5.1. Thanks to @willsoto
  • 0.1.5 - Update dependencies to include AR 5.0. Thanks to @jimcavoli
  • 0.1.4 - Missing require
  • 0.1.3 - Explicit gem dependencies
  • 0.1.2 - Upgrade schema_plus_core dependency
  • 0.1.1 - Clean up and sort dumper output. Thanks to @pik
  • 0.1.0 - Initial release, pulled from schema_plus 1.x

Development & Testing

Are you interested in contributing to SchemaPlus::Enums? Thanks! Please follow the standard protocol: fork, feature branch, develop, push, and issue pull request.

Some things to know about to help you develop and test:

  • schema_dev: SchemaPlus::Enums uses schema_dev to facilitate running rspec tests on the matrix of ruby, activerecord, and database versions that the gem supports, both locally and on travis-ci

    To to run rspec locally on the full matrix, do:

      $ schema_dev bundle install
      $ schema_dev rspec
    

    You can also run on just one configuration at a time; For info, see schema_dev --help or the schema_dev README.

    The matrix of configurations is specified in schema_dev.yml in the project root.

  • schema_plus_core: SchemaPlus::Enums uses the SchemaPlus::Core API that provides middleware callback stacks to make it easy to extend ActiveRecord's behavior. If that API is missing something you need for your contribution, please head over to schema_plus_core and open an issue or pull request.
  • schema_monkey: SchemaPlus::Enums is implemented as a schema_monkey client, using schema_monkey's convention-based protocols for extending ActiveRecord and using middleware stacks.