stateoscope 0.1.1 → 0.1.2

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: 4ed5f970d557641d7ba6584bd3c1f181ec3ba917
4
- data.tar.gz: fe3a7d314f705d133f53b860c6be221de5eb5e61
2
+ SHA256:
3
+ metadata.gz: 34c359ee93ffc4709384af57c9c6efb8c97c2fa736f3a94ede2e7dc7ad6ca8fa
4
+ data.tar.gz: f7f704ffaee3bda3a75734ecb5b1f5ccacfbacf824f2642f68e33328258d2718
5
5
  SHA512:
6
- metadata.gz: 268c0876be618d84ff9986cd2bfb6cc708b33ff41250a0f61a715138f78f17844138c986444d64dbbbd2584f4ef76d3f3d2c5bb34669bf46597840849d25fbff
7
- data.tar.gz: 8d754bb1a7d2048b2a4483d939d9614c6683ff71c3ba0ee6df45d8fb8ead814ea03935d4dff29b222d5a9e325f3cc4fda41d5b34f13b272aae5f6a20323447b7
6
+ metadata.gz: c88971ae8bf8291d08dc1a54ce992d157e196c614751ca744a4f4fe701f2125ad7fc0735e43de47bc5c7524a6dfa22f27ea6bb1d156e8d731bb6db46ba397ad2
7
+ data.tar.gz: 775982abd2df2c36cd14178396b89425e14f6ec4b3f1fdf8ac0ae9b3d969c4ba0f2b49f9109bf8a34131ea1b1024c4ab41d1b78bf2790f8b168de00c6ea636e0
data/.travis.yml CHANGED
@@ -1,4 +1,17 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
4
- before_install: gem install bundler -v 1.10.6
3
+ - 2.4.5
4
+ - 2.5.3
5
+ env:
6
+ global:
7
+ - CC_TEST_REPORTER_ID=9302884ead7bad6d1cc81026ba78b5cd8551024643cf14c72fe2d42eaaef36e6
8
+ before_install:
9
+ - gem update --system
10
+ - gem install bundler
11
+ before_script:
12
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
+ - chmod +x ./cc-test-reporter
14
+ - ./cc-test-reporter before-build
15
+ after_script:
16
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
17
+ cache: bundler
data/CHANGELOG.md ADDED
@@ -0,0 +1,23 @@
1
+ # v0.1.2 (04.04.2019)
2
+
3
+ Features:
4
+
5
+ - add ability to mark current state
6
+ - add ability to specify output format
7
+ - add ability to specify output directory
8
+
9
+ Bugfixes:
10
+
11
+ - dependency updates
12
+
13
+
14
+ # v0.1.1 (07.10.2015)
15
+
16
+ Bugfixes:
17
+
18
+ - fixed timestamp in generated filename
19
+
20
+
21
+ # v0.1.0 (07.10.2015)
22
+
23
+ Initial release
data/README.md CHANGED
@@ -1,20 +1,38 @@
1
1
  # Stateoscope
2
2
 
3
+ [![Build Status](https://travis-ci.org/padde/stateoscope.svg)](https://travis-ci.org/padde/stateoscope)
4
+ [![Code Climate](https://codeclimate.com/github/padde/stateoscope/badges/gpa.svg)](https://codeclimate.com/github/padde/stateoscope)
5
+ [![Test Coverage](https://codeclimate.com/github/padde/stateoscope/badges/coverage.svg)](https://codeclimate.com/github/padde/stateoscope/coverage)
6
+ [![Inline docs](http://inch-ci.org/github/padde/stateoscope.svg?branch=master)](http://inch-ci.org/github/padde/stateoscope)
7
+ [![Gem Version](https://badge.fury.io/rb/stateoscope.svg)](https://badge.fury.io/rb/stateoscope)
8
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/gems/stateoscope)
9
+
3
10
  Visualize State Machines using GraphViz
4
11
 
12
+ ## External Dependencies
13
+
14
+ Stateoscope depends on [GraphViz](http://www.graphviz.org/) for generating the
15
+ graphs. You need to make sure that GraphViz is properly installed on your system
16
+ before you will be able to generate graphs. If you are on a Mac, you can install
17
+ GraphViz via [Homebrew](http://brew.sh/)
18
+
19
+ ```
20
+ $ brew install graphviz
21
+ ```
22
+
5
23
  ## Installation
6
24
 
7
25
  Add this line to your application's Gemfile:
8
26
 
9
27
  ```ruby
10
- gem 'stateoscope'
28
+ gem 'stateoscope', '~> 0.1.2', group: :development
11
29
  ```
12
30
 
13
31
  And then execute:
14
32
 
15
33
  $ bundle
16
34
 
17
- ## Usage
35
+ ## Using the rake task
18
36
 
19
37
  To generate a state machine visualization for your `Model`, run
20
38
 
@@ -29,14 +47,38 @@ of the state machine as second parameter
29
47
  rake 'stateoscope:visualize[Model,specific_state_machine]'
30
48
  ```
31
49
 
32
- In both cases, a PDF file containing the graph visualization will be saved to
50
+ If you want to highlight a specific state of your state machine, add the name as a third argument.
51
+
52
+ ```ruby
53
+ rake 'stateoscope:visualize[Order,order_state,delivered]'
54
+ ```
55
+
56
+ In any case, a PDF file containing the graph visualization will be saved to
33
57
  the current directory.
34
58
 
35
- ## Integrations
59
+ ## Using Stateoscope directly
60
+
61
+ Stateoscope exposes a `visualize` method that allows for a more fine-grained and dynamic usage.
62
+
63
+ Example:
64
+
65
+ ```ruby
66
+ filename = Stateoscope.visualize(
67
+ Order,
68
+ state_machine_name: "order_state",
69
+ current_state: "delivered",
70
+ dir: Rails.root.join("public"), # default current directory
71
+ format: "png" # default "pdf", possible are all formats that GraphViz supports
72
+ )
73
+
74
+ # filename will be for example RAILS_ROOT/public/order_state-20191201145422.png
75
+ ```
36
76
 
37
- Stateoscope is currently integrated with the following state machine gems:
77
+ ## Adapters
38
78
 
39
- * [AASM](https://github.com/aasm/aasm)
79
+ Stateoscope ships with adapters for the following state machine gems:
80
+
81
+ - [AASM](https://github.com/aasm/aasm)
40
82
 
41
83
  ## Development
42
84
 
@@ -47,4 +89,3 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
47
89
  ## Contributing
48
90
 
49
91
  Bug reports and pull requests are welcome on GitHub at https://github.com/padde/stateoscope.
50
-
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "stateoscope"
3
+ require 'bundler/setup'
4
+ require 'stateoscope'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
8
8
 
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
10
+ # require 'pry'
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
data/lib/stateoscope.rb CHANGED
@@ -1,18 +1,31 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext'
3
+
4
+ require 'stateoscope/core_ext'
1
5
  require 'stateoscope/version'
2
- require 'stateoscope/integrations'
6
+ require 'stateoscope/errors'
7
+ require 'stateoscope/adapter'
3
8
  require 'stateoscope/visualizer'
4
9
 
5
10
  require 'stateoscope/railtie' if defined?(Rails)
6
11
 
7
12
  module Stateoscope
8
13
  def self.visualize(klass, options = {})
9
- state_machine_name = options.fetch(:state_machine_name, nil)
10
- integration = Integrations.new_for(klass, state_machine_name)
11
- filename = options.fetch(:filename, filename_for(integration))
12
- Visualizer.new(integration.graph).output(filename)
14
+ adapter = Adapter.new_for(klass, options[:state_machine_name])
15
+ adapter.build_graph
16
+
17
+ visualizer = Visualizer.new(adapter.graph)
18
+ visualizer.parse_graph(options[:current_state])
19
+
20
+ output_format = options.fetch(:format, 'pdf')
21
+ filename = filename_for(adapter, output_format)
22
+ filename = File.join(options[:dir], filename) if options[:dir].present?
23
+
24
+ visualizer.output(filename, output_format)
25
+ filename
13
26
  end
14
27
 
15
- def self.filename_for(integration)
16
- "#{integration.full_state_machine_name}-#{Time.now.utc.strftime('%Y%m%d%H%M%s')}"
28
+ def self.filename_for(adapter, output_format)
29
+ "#{adapter.full_state_machine_name}-#{Time.now.utc.strftime('%Y%m%d%H%M%S')}.#{output_format}"
17
30
  end
18
31
  end
@@ -0,0 +1,21 @@
1
+ require 'stateoscope/adapter_registry'
2
+
3
+ module Stateoscope
4
+ module Adapter
5
+ mattr_accessor :registry
6
+
7
+ self.registry = AdapterRegistry.new
8
+
9
+ def self.register(adapter)
10
+ registry.register(adapter)
11
+ end
12
+
13
+ def self.new_for(klass, state_machine_name)
14
+ adapter = registry.find!(klass, state_machine_name)
15
+ adapter.new(klass, state_machine_name)
16
+ end
17
+ end
18
+ end
19
+
20
+ require 'stateoscope/adapter/base'
21
+ require 'stateoscope/adapter/aasm'
@@ -1,29 +1,20 @@
1
1
  module Stateoscope
2
- module Integrations
3
- class AASM < Struct.new(:klass, :state_machine_name)
4
- def graph
5
- graph = Graph.new
6
-
7
- graph.initial_state = state_machine.initial_state.to_s
8
-
9
- state_machine.states.each do |state|
10
- graph.add_state(state.name.to_s)
11
- end
12
-
13
- state_machine.events.each do |event|
14
- event.transitions.each do |transition|
15
- graph.add_transition(transition.from.to_s, transition.to.to_s, event.name.to_s)
16
- end
17
- end
2
+ module Adapter
3
+ class AASM < Base
4
+ def self.handle?(klass, _state_machine_name)
5
+ klass.inherits_from?('::AASM')
6
+ end
18
7
 
8
+ def build_graph
9
+ add_initial_state
10
+ add_states
11
+ add_transitions
19
12
  graph.detect_final_states!
20
-
21
- graph
22
13
  end
23
14
 
24
15
  def full_state_machine_name
25
16
  [
26
- "aasm",
17
+ 'aasm',
27
18
  klass.name,
28
19
  state_machine_name
29
20
  ].compact.join('-').dasherize
@@ -32,8 +23,28 @@ module Stateoscope
32
23
  private
33
24
 
34
25
  def state_machine
35
- klass.public_send(:aasm, state_machine_name.presence)
26
+ klass.aasm(state_machine_name.presence)
27
+ end
28
+
29
+ def add_initial_state
30
+ graph.initial_state = state_machine.initial_state.to_s
31
+ end
32
+
33
+ def add_states
34
+ state_machine.states.each do |state|
35
+ graph.add_state(state.name.to_s)
36
+ end
37
+ end
38
+
39
+ def add_transitions
40
+ state_machine.events.each do |event|
41
+ event.transitions.each do |transition|
42
+ graph.add_transition(transition.from.to_s, transition.to.to_s, event.name.to_s)
43
+ end
44
+ end
36
45
  end
37
46
  end
47
+
48
+ register ::Stateoscope::Adapter::AASM
38
49
  end
39
50
  end
@@ -0,0 +1,26 @@
1
+ require 'stateoscope/graph'
2
+
3
+ module Stateoscope
4
+ module Adapter
5
+ class Base
6
+ attr_accessor :klass, :state_machine_name, :graph
7
+ def self.handle?(_klass, _state_machine_name)
8
+ fail AbstractMethodError
9
+ end
10
+
11
+ def initialize(klass, state_machine_name)
12
+ self.klass = klass
13
+ self.state_machine_name = state_machine_name
14
+ self.graph = Graph.new
15
+ end
16
+
17
+ def build_graph
18
+ fail AbstractMethodError
19
+ end
20
+
21
+ def full_state_machine_name
22
+ fail AbstractMethodError
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Stateoscope
2
+ AdapterRegistry = Struct.new(:adapters) do
3
+ def initialize
4
+ self.adapters = []
5
+ end
6
+
7
+ def register(adapter)
8
+ adapters << adapter
9
+ end
10
+
11
+ def find(klass, state_machine_name)
12
+ adapters.find do |adapter|
13
+ adapter.handle?(klass, state_machine_name)
14
+ end
15
+ end
16
+
17
+ def find!(klass, state_machine_name)
18
+ adapter = find(klass, state_machine_name)
19
+ if adapter
20
+ adapter
21
+ else
22
+ fail MissingAdapterError, 'unsupported state machine implementation'
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ require 'stateoscope/core_ext/class'
@@ -0,0 +1,6 @@
1
+ class Class
2
+ def inherits_from?(superclass_name)
3
+ return false unless const_defined?(superclass_name)
4
+ ancestors.include?(const_get(superclass_name))
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Stateoscope
2
+ Error = Class.new(StandardError)
3
+
4
+ AbstractMethodError = Class.new(Error)
5
+ MissingAdapterError = Class.new(Error)
6
+ end
@@ -5,25 +5,25 @@ module Stateoscope
5
5
  attr_accessor :initial_state, :states, :final_states, :transitions
6
6
 
7
7
  def initialize
8
- @states = []
9
- @final_states = []
10
- @transitions = []
8
+ self.states = []
9
+ self.final_states = []
10
+ self.transitions = []
11
11
  end
12
12
 
13
13
  def add_state(state)
14
- @states << state
14
+ states << state
15
15
  end
16
16
 
17
- def add_transition(from, to, event)
18
- @transitions << OpenStruct.new(from: from, to: to, event: event)
17
+ def add_transition(from, to, event = nil)
18
+ transitions << OpenStruct.new(from: from, to: to, event: event)
19
19
  end
20
20
 
21
21
  def detect_final_states!
22
- @final_states = states - transitions.map(&:from)
22
+ self.final_states = states - transitions.map(&:from)
23
23
  end
24
24
 
25
25
  def final_state?(state)
26
- @final_states.include?(state)
26
+ final_states.include?(state)
27
27
  end
28
28
  end
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module Stateoscope
2
- VERSION = "0.1.1"
2
+ VERSION = '0.1.2'
3
3
  end
@@ -1,40 +1,33 @@
1
1
  require 'ruby-graphviz'
2
2
 
3
3
  module Stateoscope
4
- class Visualizer < Struct.new(:graph)
5
- def initialize(graph)
6
- super
7
- parse_graph!
8
- end
9
-
10
- def parse_graph!
4
+ Visualizer = Struct.new(:graph) do
5
+ def parse_graph(current_state)
11
6
  @viz = GraphViz.new(:G, type: 'digraph')
12
7
  add_entry_point
13
- add_states
8
+ add_states(current_state)
14
9
  add_entry_point_transition
15
10
  add_state_transitions
16
11
  end
17
12
 
18
- def output(filename)
19
- @viz.output(pdf: "#{filename}.pdf")
13
+ def output(filename, output_format)
14
+ @viz.output(output_format => filename)
20
15
  end
21
16
 
22
17
  private
23
18
 
24
19
  ENTRY_POINT = '__ENTRY_POINT__'
25
20
 
26
- def filename
27
- "#{integration.name}-#{state_machine_name}-#{Time.now.utc.strftime('%Y%m%d%H%M%S')}"
28
- end
29
-
30
21
  def add_entry_point
31
22
  return unless graph.initial_state
32
23
  add_node(ENTRY_POINT, shape: 'circle', label: '', style: 'filled', color: 'black', fixedsize: true, width: 0.3)
33
24
  end
34
25
 
35
- def add_states
26
+ def add_states(current_state)
36
27
  graph.states.each do |state|
37
- add_node(state, peripheries: graph.final_state?(state) ? 2 : 1)
28
+ options = { peripheries: graph.final_state?(state) ? 2 : 1 }
29
+ options[:color] = 'green' if state == current_state
30
+ add_node(state, options)
38
31
  end
39
32
  end
40
33
 
@@ -1,8 +1,9 @@
1
1
  namespace :stateoscope do
2
2
  desc 'visualize state machine for a given class'
3
- task :visualize, [:class, :state_machine_name] => :environment do |t, args|
4
- fail ArgumentError 'missing required argument <class>' unless args[:class].present?
5
- klass = args[:class].classify.constantize
6
- Stateoscope.visualize(klass, state_machine_name: args[:state_machine_name])
3
+ task :visualize, %i[class state_machine_name current_state] => :environment do |_, args|
4
+ args = args.to_hash
5
+ klass = args.delete(:class)
6
+ raise ArgumentError, 'missing required argument <class>' if klass.blank?
7
+ Stateoscope.visualize(klass.classify.constantize, args)
7
8
  end
8
9
  end
data/stateoscope.gemspec CHANGED
@@ -4,24 +4,28 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'stateoscope/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "stateoscope"
7
+ spec.name = 'stateoscope'
8
8
  spec.version = Stateoscope::VERSION
9
- spec.authors = ["Patrick Oscity"]
10
- spec.email = ["patrick.oscity@gmail.com"]
9
+ spec.authors = ['Patrick Oscity']
10
+ spec.email = ['patrick.oscity@gmail.com']
11
11
 
12
- spec.summary = %q{State Machine Visualizer}
13
- spec.description = %q{Visualize State Machines using GraphViz}
14
- spec.homepage = "https://github.com/padde/stateoscope"
15
- spec.license = "MIT"
12
+ spec.summary = 'State Machine Visualizer'
13
+ spec.description = 'Visualize State Machines using GraphViz'
14
+ spec.homepage = 'https://github.com/padde/stateoscope'
15
+ spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency "ruby-graphviz"
22
+ spec.add_dependency 'activesupport'
23
+ spec.add_dependency 'ruby-graphviz'
23
24
 
24
- spec.add_development_dependency "bundler", "~> 1.10"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency 'bundler', '~> 2.0'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ spec.add_development_dependency 'timecop'
29
+ spec.add_development_dependency 'simplecov'
30
+ spec.add_development_dependency 'pry'
27
31
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stateoscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Oscity
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-07 00:00:00.000000000 Z
11
+ date: 2019-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: ruby-graphviz
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +44,14 @@ dependencies:
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '1.10'
47
+ version: '2.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '1.10'
54
+ version: '2.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +68,48 @@ dependencies:
54
68
  version: '10.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: timecop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
57
113
  requirement: !ruby/object:Gem::Requirement
58
114
  requirements:
59
115
  - - ">="
@@ -76,6 +132,7 @@ files:
76
132
  - ".gitignore"
77
133
  - ".rspec"
78
134
  - ".travis.yml"
135
+ - CHANGELOG.md
79
136
  - Gemfile
80
137
  - LICENSE.txt
81
138
  - README.md
@@ -83,9 +140,14 @@ files:
83
140
  - bin/console
84
141
  - bin/setup
85
142
  - lib/stateoscope.rb
143
+ - lib/stateoscope/adapter.rb
144
+ - lib/stateoscope/adapter/aasm.rb
145
+ - lib/stateoscope/adapter/base.rb
146
+ - lib/stateoscope/adapter_registry.rb
147
+ - lib/stateoscope/core_ext.rb
148
+ - lib/stateoscope/core_ext/class.rb
149
+ - lib/stateoscope/errors.rb
86
150
  - lib/stateoscope/graph.rb
87
- - lib/stateoscope/integrations.rb
88
- - lib/stateoscope/integrations/aasm.rb
89
151
  - lib/stateoscope/railtie.rb
90
152
  - lib/stateoscope/version.rb
91
153
  - lib/stateoscope/visualizer.rb
@@ -110,8 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
172
  - !ruby/object:Gem::Version
111
173
  version: '0'
112
174
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 2.4.5
175
+ rubygems_version: 3.0.3
115
176
  signing_key:
116
177
  specification_version: 4
117
178
  summary: State Machine Visualizer
@@ -1,14 +0,0 @@
1
- require 'stateoscope/graph'
2
- require 'stateoscope/integrations/aasm'
3
-
4
- module Stateoscope
5
- module Integrations
6
- def self.new_for(klass, state_machine_name)
7
- if klass.ancestors.include?(::AASM)
8
- ::Stateoscope::Integrations::AASM.new(klass, state_machine_name)
9
- else
10
- fail NotImplementedError, "unsupported state machine implementation"
11
- end
12
- end
13
- end
14
- end