stateful_enum 0.3.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c1f17ddca9a9a86a18e5a6dcfcc448a0511e7f63
4
- data.tar.gz: c3fda258904629bd7be634a2cb8986c4c97f4d86
2
+ SHA256:
3
+ metadata.gz: 78d2de46a67e071c7ec7d4b0147d6a52768af7fef8ba81a7454c1f129dcd6b0d
4
+ data.tar.gz: 38ddee71fcc5406f6fa8ac93ae582230277173527a5ab32fc8e36a7f9aa15f10
5
5
  SHA512:
6
- metadata.gz: bf2a2a383dcbc193fb4c2ff91b09c85d21ba39c7e13c60abdf1e8ada96b2adb76d180dd125581315b50ece0459272a38e59df0ecad05c489c485e56acf511366
7
- data.tar.gz: dc97471c1c8455531706b98e89c69e6158abe215ba631694ab2dfd4216f70697e593adbbe1316f486e3b126c2370da6d9f167825eb47d06910856d9052a5aabe
6
+ metadata.gz: f5a4a52fc2a136374e3337d789cf0572296aa79f3724540d166654cffbf9d5c3529dde5b5e4241c0716d0d8a7ba726381e064b1e0996f5c5548813d444c2d926
7
+ data.tar.gz: fcd0c04464d71a140c2d7571b6e9732556d4d23b5aa2d52727402220438abd7d1bb266b4f7cd11a8692d1c6a90970a60c89a5a0e23b9cb4fdd0dc85405f73c1d
@@ -0,0 +1,76 @@
1
+ name: build
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ strategy:
8
+ matrix:
9
+ include:
10
+ - ruby_version: ruby-head
11
+ gemfile: gemfiles/Gemfile-rails.edge
12
+ allow_failures: 'true'
13
+ - ruby_version: '3.0'
14
+ gemfile: gemfiles/Gemfile-rails.edge
15
+ allow_failures: 'true'
16
+
17
+ - ruby_version: ruby-head
18
+ gemfile: gemfiles/Gemfile-rails.7.0.x
19
+ allow_failures: 'true'
20
+
21
+ - ruby_version: '3.0'
22
+ gemfile: gemfiles/Gemfile-rails.7.0.x
23
+ - ruby_version: '2.7'
24
+ gemfile: gemfiles/Gemfile-rails.7.0.x
25
+
26
+ - ruby_version: '3.0'
27
+ gemfile: gemfiles/Gemfile-rails.6.1.x
28
+ - ruby_version: '2.7'
29
+ gemfile: gemfiles/Gemfile-rails.6.1.x
30
+ - ruby_version: '2.6'
31
+ gemfile: gemfiles/Gemfile-rails.6.1.x
32
+
33
+ - ruby_version: '2.7'
34
+ gemfile: gemfiles/Gemfile-rails.6.0.x
35
+
36
+ - ruby_version: '2.6'
37
+ gemfile: gemfiles/Gemfile-rails.5.2.x
38
+ - ruby_version: '2.4'
39
+ gemfile: gemfiles/Gemfile-rails.5.2.x
40
+ - ruby_version: '2.2'
41
+ gemfile: gemfiles/Gemfile-rails.5.2.x
42
+
43
+ - ruby_version: '2.6'
44
+ gemfile: gemfiles/Gemfile-rails.5.1.x
45
+
46
+ - ruby_version: '2.6'
47
+ gemfile: gemfiles/Gemfile-rails.5.0.x
48
+
49
+ - ruby_version: '2.5'
50
+ gemfile: gemfiles/Gemfile-rails.4.2.x
51
+ bundler_version: '1'
52
+
53
+ - ruby_version: '2.3'
54
+ gemfile: gemfiles/Gemfile-rails.4.1.x
55
+ bundler_version: '1'
56
+
57
+
58
+ runs-on: ubuntu-latest
59
+
60
+ env:
61
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
62
+
63
+ steps:
64
+ - uses: actions/checkout@v2
65
+
66
+ - uses: ruby/setup-ruby@v1
67
+ with:
68
+ ruby-version: "${{ matrix.ruby_version }}"
69
+ bundler: "${{ matrix.bundler_version }}"
70
+ bundler-cache: true
71
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
72
+
73
+ - run: sudo apt-get install graphviz
74
+
75
+ - run: bundle exec rake
76
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # StatefulEnum [![Build Status](https://travis-ci.org/amatsuda/stateful_enum.svg?branch=master)](https://travis-ci.org/amatsuda/stateful_enum)
1
+ # StatefulEnum [![Build Status](https://github.com/amatsuda/stateful_enum/actions/workflows/main.yml/badge.svg)](https://github.com/amatsuda/stateful_enum/actions)
2
2
 
3
3
  stateful_enum is a state machine gem built on top of ActiveRecord's built-in ActiveRecord::Enum.
4
4
 
@@ -105,6 +105,7 @@ There are a few important details to note regarding this feature:
105
105
  * The "from" states and the "to" states should both be given in Symbols.
106
106
  * The "from" state can be multiple states, in which case the key can be given as an Array of states, as shown in the usage example.
107
107
  * The "from" state can be `all` that means all defined states.
108
+ * The "from" state can be an exception of Array of states, in this case the key can be a subtraction of `all` with the state to be excluded, as shown in the usage example.
108
109
 
109
110
  ### :if and :unless Condition
110
111
 
@@ -121,6 +122,38 @@ end
121
122
 
122
123
  You can define `before` and `after` event hooks inside of an `event` block.
123
124
 
125
+ ### Inspecting All Defined Events And Current Possible Events
126
+
127
+ You can get the list of defined events from the model class:
128
+
129
+ ```ruby
130
+ Bug.stateful_enum.events
131
+ #=> an Array of all defined StatefulEnum::Machine::Event objects
132
+ ```
133
+
134
+ And you can get the list of possible event definitions from the model instance:
135
+
136
+ ```ruby
137
+ Bug.new(status: :assigned).stateful_enum.possible_events
138
+ #=> an Array of StatefulEnum::Machine::Event objects that are callable from the receiver object
139
+ ```
140
+
141
+ Maybe what you really need for your app is the list of possible event "names":
142
+
143
+ ```ruby
144
+ Bug.new(status: :assigned).stateful_enum.possible_event_names
145
+ #=> [:resolve, :close]
146
+ ```
147
+
148
+ You can get the list of next possible state names as well:
149
+
150
+ ```ruby
151
+ Bug.new(status: :assigned).stateful_enum.possible_states
152
+ #=> [:resolved, :closed]
153
+ ```
154
+
155
+ These features would help some kind of metaprogramming over state transitions.
156
+
124
157
 
125
158
  ## Generating State Machine Diagrams
126
159
 
@@ -144,7 +177,7 @@ You can specify relative or absolute output path via environment variable `DEST_
144
177
 
145
178
  ## Support Rails Versions
146
179
 
147
- * Rails 4.1.x, 4.2.x, 5.0, and 5.1 (edge)
180
+ * Rails 4.1.x, 4.2.x, 5.0, 5.1, 5.2, 6.0, 6.1, 7.0, and 7.1 (edge)
148
181
 
149
182
 
150
183
  ## Contributing
data/Rakefile CHANGED
@@ -13,11 +13,3 @@ Rake::TestTask.new(:test) do |t|
13
13
  end
14
14
 
15
15
  task default: :test
16
-
17
- namespace :test do
18
- task :all do
19
- YAML.load(File.read(File.expand_path('.travis.yml')))['gemfile'].each do |gemfile|
20
- sh "BUNDLE_GEMFILE='#{gemfile}' bundle exec rake test"
21
- end
22
- end
23
- end
@@ -1,8 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'stateful_enum', path: '..'
3
+ gemspec path: '..'
4
4
 
5
5
  gem 'rails', '~> 4.1.0'
6
- gem 'sqlite3'
7
- gem 'test-unit-rails'
8
- gem 'ruby-graphviz'
6
+ gem 'sqlite3', '~> 1.3.6'
@@ -1,8 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'stateful_enum', path: '..'
3
+ gemspec path: '..'
4
4
 
5
5
  gem 'rails', '~> 4.2.0'
6
- gem 'sqlite3'
7
- gem 'test-unit-rails'
8
- gem 'ruby-graphviz'
6
+ gem 'sqlite3', '~> 1.3.6'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', '~> 5.0.0'
6
+ gem 'sqlite3', '~> 1.3.6'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', '~> 5.1.0'
6
+ gem 'sqlite3', '~> 1.3.6'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', git: 'https://github.com/rails/rails/', branch: '5-2-stable'
6
+ gem 'sqlite3', '~> 1.3.6'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', '~> 6.0.0'
6
+ gem 'sqlite3', '~> 1.4'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', '~> 6.1.0'
6
+ gem 'sqlite3', '~> 1.4'
7
+ gem 'selenium-webdriver'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'rails', '~> 7.0.0'
6
+ gem 'sqlite3', '~> 1.4'
7
+ gem 'selenium-webdriver'
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) do |repo_name|
4
+ repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
5
+ "https://github.com/#{repo_name}.git"
6
+ end
7
+
8
+ gemspec path: '..'
9
+
10
+ github 'rails/rails' do
11
+ gem 'rails'
12
+ end
13
+ gem 'sqlite3'
14
+ gem 'selenium-webdriver'
@@ -5,9 +5,9 @@ require 'rails/generators/named_base'
5
5
  module StatefulEnum
6
6
  module Generators
7
7
  class GraphGenerator < ::Rails::Generators::NamedBase
8
- desc 'Draws a state machine diagram'
8
+ desc 'Draws a state machine diagram as a PNG file'
9
9
  def draw
10
- require 'graphviz'
10
+ require 'ruby-graphviz'
11
11
  StatefulEnum::Machine.prepend StatefulEnum::Graph
12
12
  class_name.constantize
13
13
  end
@@ -50,6 +50,7 @@ module StatefulEnum
50
50
  class EventDrawer < ::StatefulEnum::Machine::Event
51
51
  def initialize(g, states, prefix, suffix, name, &block)
52
52
  @g, @states, @prefix, @suffix, @name = g, states, prefix, suffix, name
53
+ @before, @after = [], []
53
54
 
54
55
  instance_eval(&block) if block
55
56
  end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/named_base'
4
+
5
+ module StatefulEnum
6
+ module Generators
7
+ class PlantumlGenerator < ::Rails::Generators::NamedBase
8
+ desc 'Draws a PlantUML state machine diagram'
9
+ def plantuml
10
+ StatefulEnum::Machine.prepend StatefulEnum::PlantUML
11
+ class_name.constantize
12
+ end
13
+ end
14
+ end
15
+
16
+ module PlantUML
17
+ def initialize(model, column, states, prefix, suffix, &block)
18
+ super
19
+ UmlWriter.new model, column, states, @prefix, @suffix, &block
20
+ end
21
+
22
+ class UmlWriter
23
+ def initialize(model, column, states, prefix, suffix, &block)
24
+ @states, @prefix, @suffix = states, prefix, suffix
25
+ @items = []
26
+
27
+ if (default_value = model.columns_hash[column.to_s].default)
28
+ default_label = model.defined_enums[column.to_s].key default_value.to_i # SQLite returns the default value in String
29
+ end
30
+
31
+ instance_eval(&block)
32
+
33
+ lines = default_label ? ["[*] --> #{default_label}"] : []
34
+ lines.concat @items.map {|item| "#{item.from} --> #{item.to} :#{item.label}" }
35
+ (@items.map(&:to).uniq - @items.map(&:from).uniq).each do |final|
36
+ lines.push "#{final} --> [*]"
37
+ end
38
+
39
+ File.write(File.join((ENV['DEST_DIR'] || Dir.pwd), "#{model.name}.puml"), lines.join("\n") << "\n")
40
+ end
41
+
42
+ def event(name, &block)
43
+ EventStore.new @items, @states, @prefix, @suffix, name, &block
44
+ end
45
+ end
46
+
47
+ class EventStore < ::StatefulEnum::Machine::Event
48
+ def initialize(items, states, prefix, suffix, name, &block)
49
+ @items, @states, @prefix, @suffix, @name, @before, @after = items, states, prefix, suffix, name, [], []
50
+
51
+ instance_eval(&block) if block
52
+ end
53
+
54
+ def transition(transitions, options = {})
55
+ if options.blank?
56
+ transitions.delete :if
57
+ transitions.delete :unless
58
+ end
59
+
60
+ transitions.each_pair do |from, to|
61
+ Array(from).each do |f|
62
+ @items.push Item.new(f, to, "#{@prefix}#{@name}#{@suffix}")
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ Item = Struct.new(:from, :to, :label)
69
+ end
70
+ end
@@ -9,14 +9,32 @@ module StatefulEnum
9
9
  # transition :unassigned => :assigned
10
10
  # end
11
11
  # end
12
- def enum(definitions, &block)
13
- prefix, suffix = definitions[:_prefix], definitions[:_suffix] if Rails::VERSION::STRING >= '5'
14
- enum = super definitions
12
+ if Rails::VERSION::MAJOR >= 7
13
+ def enum(name = nil, values = nil, **options, &block)
14
+ return super unless block
15
15
 
16
- if block
17
- definitions.each_key do |column|
18
- states = enum[column]
19
- StatefulEnum::Machine.new self, column, (states.is_a?(Hash) ? states.keys : states), prefix, suffix, &block
16
+ definitions = super name, values, **options
17
+
18
+ if name
19
+ (@_defined_stateful_enums ||= []) << StatefulEnum::Machine.new(self, name, (definitions.is_a?(Hash) ? definitions.keys : definitions), options[:prefix], options[:suffix], &block)
20
+ else
21
+ definitions.each do |column, states|
22
+ (@_defined_stateful_enums ||= []) << StatefulEnum::Machine.new(self, column, (states.is_a?(Hash) ? states.keys : states), options[:_prefix], options[:_suffix], &block)
23
+ end
24
+ end
25
+
26
+ definitions
27
+ end
28
+ else
29
+ def enum(definitions, &block)
30
+ return super unless block
31
+
32
+ # Preserving prefix and suffix values before calling super because the super destroys the given Hash
33
+ prefix, suffix = definitions[:_prefix], definitions[:_suffix] if Rails::VERSION::MAJOR >= 5
34
+ enum_values = super definitions
35
+
36
+ enum_values.each_pair do |column, states|
37
+ (@_defined_stateful_enums ||= []) << StatefulEnum::Machine.new(self, column, (states.is_a?(Hash) ? states.keys : states), prefix, suffix, &block)
20
38
  end
21
39
  end
22
40
  end
@@ -2,18 +2,16 @@
2
2
 
3
3
  module StatefulEnum
4
4
  class Machine
5
+ attr_reader :events
6
+
5
7
  def initialize(model, column, states, prefix, suffix, &block)
6
- @model, @column, @states, @event_names = model, column, states, []
7
- @prefix = if prefix == true
8
- "#{column}_"
9
- elsif prefix
10
- "#{prefix}_"
11
- end
12
- @suffix = if suffix == true
13
- "_#{column}"
14
- elsif suffix
15
- "_#{suffix}"
16
- end
8
+ @model, @column, @states, @events = model, column, states.map(&:to_sym), []
9
+ @prefix = if prefix
10
+ prefix == true ? "#{column}_" : "#{prefix}_"
11
+ end
12
+ @suffix = if suffix
13
+ suffix == true ? "_#{column}" : "_#{suffix}"
14
+ end
17
15
 
18
16
  # undef non-verb methods e.g. Model#active!
19
17
  states.each do |state|
@@ -24,54 +22,67 @@ module StatefulEnum
24
22
  end
25
23
 
26
24
  def event(name, &block)
27
- raise ArgumentError, "event: :#{name} has already been defined." if @event_names.include? name
28
- Event.new @model, @column, @states, @prefix, @suffix, name, &block
29
- @event_names << name
25
+ raise ArgumentError, "event: :#{name} has already been defined." if @events.map(&:name).include? name
26
+ @events << Event.new(@model, @column, @states, @prefix, @suffix, name, &block)
30
27
  end
31
28
 
32
29
  class Event
30
+ attr_reader :name, :value_method_name, :transitions
31
+
33
32
  def initialize(model, column, states, prefix, suffix, name, &block)
34
- @states, @name, @transitions, @before, @after = states, name, {}, nil, nil
33
+ @states, @name, @transitions, @before, @after = states, name, {}, [], []
35
34
 
36
35
  instance_eval(&block) if block
37
36
 
38
37
  transitions, before, after = @transitions, @before, @after
39
- new_method_name = "#{prefix}#{name}#{suffix}"
38
+ @value_method_name = value_method_name = :"#{prefix}#{name}#{suffix}"
40
39
 
41
40
  # defining event methods
42
41
  model.class_eval do
43
42
  # def assign()
44
- detect_enum_conflict! column, new_method_name
45
- define_method new_method_name do
43
+ detect_enum_conflict! column, value_method_name
44
+
45
+ # defining callbacks
46
+ define_callbacks value_method_name
47
+ before.each do |before_callback|
48
+ model.set_callback value_method_name, :before, before_callback
49
+ end
50
+ after.each do |after_callback|
51
+ model.set_callback value_method_name, :after, after_callback
52
+ end
53
+
54
+ define_method value_method_name do
46
55
  to, condition = transitions[send(column).to_sym]
47
56
  #TODO better error
48
- if to && (!condition || instance_exec(&condition))
57
+ if to && (condition.nil? || instance_exec(&condition))
49
58
  #TODO transaction?
50
- instance_eval(&before) if before
51
- original_method = self.class.send(:_enum_methods_module).instance_method "#{prefix}#{to}#{suffix}!"
52
- ret = original_method.bind(self).call
53
- instance_eval(&after) if after
54
- ret
59
+ run_callbacks value_method_name do
60
+ original_method = self.class.send(:_enum_methods_module).instance_method "#{prefix}#{to}#{suffix}!"
61
+ original_method.bind(self).call
62
+ end
55
63
  else
56
64
  false
57
65
  end
58
66
  end
59
67
 
60
68
  # def assign!()
61
- detect_enum_conflict! column, "#{new_method_name}!"
62
- define_method "#{new_method_name}!" do
63
- send(new_method_name) || raise('Invalid transition')
69
+ detect_enum_conflict! column, "#{value_method_name}!"
70
+ define_method "#{value_method_name}!" do
71
+ send(value_method_name) || raise('Invalid transition')
64
72
  end
65
73
 
66
74
  # def can_assign?()
67
- detect_enum_conflict! column, "can_#{new_method_name}?"
68
- define_method "can_#{new_method_name}?" do
69
- transitions.key? send(column).to_sym
75
+ detect_enum_conflict! column, "can_#{value_method_name}?"
76
+ define_method "can_#{value_method_name}?" do
77
+ state = send(column).to_sym
78
+ return false unless transitions.key? state
79
+ _to, condition = transitions[state]
80
+ condition.nil? || instance_exec(&condition)
70
81
  end
71
82
 
72
83
  # def assign_transition()
73
- detect_enum_conflict! column, "#{new_method_name}_transition"
74
- define_method "#{new_method_name}_transition" do
84
+ detect_enum_conflict! column, "#{value_method_name}_transition"
85
+ define_method "#{value_method_name}_transition" do
75
86
  transitions[send(column).to_sym].try! :first
76
87
  end
77
88
  end
@@ -100,11 +111,11 @@ module StatefulEnum
100
111
  end
101
112
 
102
113
  def before(&block)
103
- @before = block
114
+ @before << block
104
115
  end
105
116
 
106
117
  def after(&block)
107
- @after = block
118
+ @after << block
108
119
  end
109
120
  end
110
121
  end
@@ -1,11 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'stateful_enum/active_record_extension'
4
+ require 'stateful_enum/state_inspection'
4
5
 
5
6
  module StatefulEnum
6
7
  class Railtie < ::Rails::Railtie
7
- ActiveSupport.on_load :active_record do
8
- ::ActiveRecord::Base.extend StatefulEnum::ActiveRecordEnumExtension
8
+ initializer 'stateful_enum' do
9
+ ActiveSupport.on_load :active_record do
10
+ ::ActiveRecord::Base.extend StatefulEnum::ActiveRecordEnumExtension
11
+ ::ActiveRecord::Base.include StatefulEnum::StateInspection
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stateful_enum/machine'
4
+
5
+ module StatefulEnum
6
+ module StateInspection
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ def stateful_enum
11
+ @_defined_stateful_enums
12
+ end
13
+ end
14
+
15
+ def stateful_enum
16
+ StateInspector.new(self.class.stateful_enum, self)
17
+ end
18
+ end
19
+
20
+ class StateInspector
21
+ def initialize(defined_stateful_enums, model_instance)
22
+ @defined_stateful_enums, @model_instance = defined_stateful_enums, model_instance
23
+ end
24
+
25
+ # List of possible events from the current state
26
+ def possible_events
27
+ @defined_stateful_enums.flat_map {|se| se.events.select {|e| @model_instance.send("can_#{e.value_method_name}?") } }
28
+ end
29
+
30
+ # List of possible event names from the current state
31
+ def possible_event_names
32
+ possible_events.map(&:value_method_name)
33
+ end
34
+
35
+ # List of transitionable states from the current state
36
+ def possible_states
37
+ @defined_stateful_enums.flat_map do |stateful_enum|
38
+ col = stateful_enum.instance_variable_get :@column
39
+ pe = stateful_enum.events.select {|e| @model_instance.send("can_#{e.value_method_name}?") }
40
+ pe.flat_map {|e| e.transitions[@model_instance.send(col).to_sym].first }
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StatefulEnum
4
- VERSION = '0.3.1'
4
+ VERSION = '0.7.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stateful_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-14 00:00:00.000000000 Z
11
+ date: 2021-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -101,8 +101,8 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - ".github/workflows/main.yml"
104
105
  - ".gitignore"
105
- - ".travis.yml"
106
106
  - Gemfile
107
107
  - MIT-LICENSE
108
108
  - README.md
@@ -111,19 +111,27 @@ files:
111
111
  - bin/setup
112
112
  - gemfiles/Gemfile-rails.4.1.x
113
113
  - gemfiles/Gemfile-rails.4.2.x
114
- - gemfiles/Gemfile-rails.5.0.0
114
+ - gemfiles/Gemfile-rails.5.0.x
115
+ - gemfiles/Gemfile-rails.5.1.x
116
+ - gemfiles/Gemfile-rails.5.2.x
117
+ - gemfiles/Gemfile-rails.6.0.x
118
+ - gemfiles/Gemfile-rails.6.1.x
119
+ - gemfiles/Gemfile-rails.7.0.x
120
+ - gemfiles/Gemfile-rails.edge
115
121
  - lib/generators/stateful_enum/graph_generator.rb
122
+ - lib/generators/stateful_enum/plantuml_generator.rb
116
123
  - lib/stateful_enum.rb
117
124
  - lib/stateful_enum/active_record_extension.rb
118
125
  - lib/stateful_enum/machine.rb
119
126
  - lib/stateful_enum/railtie.rb
127
+ - lib/stateful_enum/state_inspection.rb
120
128
  - lib/stateful_enum/version.rb
121
129
  - stateful_enum.gemspec
122
130
  homepage: https://github.com/amatsuda/stateful_enum
123
131
  licenses:
124
132
  - MIT
125
133
  metadata: {}
126
- post_install_message:
134
+ post_install_message:
127
135
  rdoc_options: []
128
136
  require_paths:
129
137
  - lib
@@ -138,9 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
146
  - !ruby/object:Gem::Version
139
147
  version: '0'
140
148
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 2.5.1
143
- signing_key:
149
+ rubygems_version: 3.1.6
150
+ signing_key:
144
151
  specification_version: 4
145
152
  summary: A state machine plugin on top of ActiveRecord::Enum
146
153
  test_files: []
data/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- language: ruby
2
-
3
- sudo: false
4
-
5
- cache:
6
- - apt
7
- - bundler
8
-
9
- rvm:
10
- - 2.2.5
11
- - 2.3.1
12
- - ruby-head
13
-
14
- matrix:
15
- exclude:
16
- - rvm: ruby-head
17
- gemfile: gemfiles/Gemfile-rails.4.1.x
18
- - rvm: ruby-head
19
- gemfile: gemfiles/Gemfile-rails.4.2.x
20
-
21
- gemfile:
22
- - gemfiles/Gemfile-rails.4.1.x
23
- - gemfiles/Gemfile-rails.4.2.x
24
- - gemfiles/Gemfile-rails.5.0.0
25
-
26
- addons:
27
- apt:
28
- packages:
29
- - graphviz
30
-
31
- matrix:
32
- allow_failures:
33
- - rvm: ruby-head
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'stateful_enum', path: '..'
4
-
5
- gem 'rails', '~> 5.0.0'
6
- gem 'sqlite3'
7
- gem 'test-unit-rails'
8
- gem 'ruby-graphviz'