aasm-diagram 0.1.2 → 0.1.3
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 +5 -5
- data/README.md +53 -2
- data/aasm-diagram.gemspec +1 -1
- data/lib/aasm-diagram.rb +2 -0
- data/lib/aasm_diagram/Rakefile +4 -0
- data/lib/aasm_diagram/railtie.rb +13 -0
- data/lib/aasm_diagram/tasks/generate.rake +20 -0
- data/lib/aasm_diagram/version.rb +1 -1
- metadata +18 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 60cce49c3986317422d3b5385239b00e250ad462430fa9711994fc9b0b4839d8
|
4
|
+
data.tar.gz: 18fe0ac14dd690b7c51570e1afbe0ca54c70ea5c6200bc539813750072ec2c1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bd83db82bc1bd1cf97d87c719979e5dec4e8522092ef9bd42260fb211703351a6d370228816f35b45986c2a086f227962f310ed1385e96e7e9ed8545ce6fde9
|
7
|
+
data.tar.gz: 3bd045610e90a710a7a384860d89e5437dae6c0dd72c7037e4e55ae4c2b56722a43e25c5811ab23b6361c1d0cfb801afa5680862434840a206b14c36e5bb38a8
|
data/README.md
CHANGED
@@ -37,8 +37,59 @@ Generates the following diagram:
|
|
37
37
|
|
38
38
|
## Installation
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
- Install Graphviz ([see the rails-erd guide for more details](https://voormedia.github.io/rails-erd/install.html)). If you use Homebrew try `brew install graphviz`.
|
41
|
+
- Add `gem 'aasm-diagram', require: false, group: :development` to your `Gemfile` and run `bundle`.
|
42
|
+
|
43
|
+
## Integration
|
44
|
+
|
45
|
+
The gem exposes the `generate` Rake task, that can be used to generate the diagrams of state machines into
|
46
|
+
PNG images. The `generate` task accepts two parameters:
|
47
|
+
|
48
|
+
- the name of the model, in underscored format, will be CamelCased by the task
|
49
|
+
- the name of the state machine, for models with multiple AASMs; this argument is optional
|
50
|
+
|
51
|
+
The task will output the PNG image by default to the `/tmp` folder; but can be configured via the
|
52
|
+
`AASM_DIAGRAM_OUTPUT_DIR` environment variable to write the files to another folder.
|
53
|
+
|
54
|
+
The filenames are generated based on the parameters as follows `model_name-state_machine_name.png`.
|
55
|
+
If no state machine name is provided, the task will use `default` for the file name.
|
56
|
+
|
57
|
+
```sh
|
58
|
+
# for the Order model and the :dropoff state machine
|
59
|
+
rake aasm-diagram:generate[order,dropoff] # -> tmp/order-dropoff.png
|
60
|
+
|
61
|
+
# for the Invoice model and the "default" state machine
|
62
|
+
rake aasm-diagram:generate[invoice] # -> tmp/invoice-default.png
|
63
|
+
|
64
|
+
# with custom output directory
|
65
|
+
AASM_DIAGRAM_OUTPUT_DIR=docs rake aasm-diagram:generate[invoice] # -> docs/invoice-default.png
|
66
|
+
```
|
67
|
+
|
68
|
+
### Rails
|
69
|
+
|
70
|
+
Once installed, the gem automatically integrates with Rails via Railties and exposes the task automatically.
|
71
|
+
|
72
|
+
`rails aasm-diagram:generate[my_model,my_state_machine]`
|
73
|
+
|
74
|
+
If the model contains only one state machine, or you just want to generate for the "default" one
|
75
|
+
you can skip the state machine name parameter.
|
76
|
+
|
77
|
+
`rails assm-diagram:generate[my_model]`
|
78
|
+
|
79
|
+
### Plain Ruby
|
80
|
+
|
81
|
+
For plain Ruby projects the gem includes a Rakefile that can be loaded in your project's Rakefile,
|
82
|
+
using source code along the lines of:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
# in Rakefile
|
86
|
+
|
87
|
+
require 'aasm-diagram'
|
88
|
+
|
89
|
+
spec = Gem::Specification.find_by_name 'aasm-diagram'
|
90
|
+
rakefile = "#{spec.gem_dir}/lib/aasm_diagram/Rakefile"
|
91
|
+
load rakefile
|
92
|
+
```
|
42
93
|
|
43
94
|
## More Examples
|
44
95
|
|
data/aasm-diagram.gemspec
CHANGED
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_runtime_dependency 'ruby-graphviz', '~> 1.2'
|
27
27
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
29
|
-
spec.add_development_dependency 'rake', '~>
|
29
|
+
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3'
|
30
30
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
31
31
|
end
|
data/lib/aasm-diagram.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'aasm-diagram'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
module AASMDiagram
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
railtie_name :aasm_diagram
|
7
|
+
|
8
|
+
rake_tasks do
|
9
|
+
path = File.expand_path(__dir__)
|
10
|
+
Dir.glob("#{path}/tasks/*.rake").each { |f| load f }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
namespace :'aasm-diagram' do
|
2
|
+
desc 'Generate AASM diagram for the given model and (optionally) state machine'
|
3
|
+
task :generate, [:model, :smn] => :environment do |_task, args|
|
4
|
+
puts 'Missing `model` argument.' unless args[:model].present?
|
5
|
+
model_klass = args[:model].camelize.safe_constantize
|
6
|
+
puts 'Invalid `model` argument.' unless model_klass
|
7
|
+
|
8
|
+
smn = args[:smn]&.to_sym
|
9
|
+
|
10
|
+
model_instance = model_klass.new
|
11
|
+
|
12
|
+
output_dir = ENV.fetch('AASM_DIAGRAM_OUTPUT_DIR') { './tmp' }
|
13
|
+
output = File.join([output_dir, "#{args[:model]}-#{args[:smn] || 'default'}.png"])
|
14
|
+
|
15
|
+
AASMDiagram::Diagram.new(
|
16
|
+
smn && model_instance.aasm(smn) || model_instance.aasm,
|
17
|
+
output
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
data/lib/aasm_diagram/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aasm-diagram
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kate Murphy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aasm
|
@@ -64,14 +64,20 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '12.3'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 12.3.3
|
68
71
|
type: :development
|
69
72
|
prerelease: false
|
70
73
|
version_requirements: !ruby/object:Gem::Requirement
|
71
74
|
requirements:
|
72
75
|
- - "~>"
|
73
76
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
77
|
+
version: '12.3'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 12.3.3
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
82
|
name: rspec
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +92,7 @@ dependencies:
|
|
86
92
|
- - "~>"
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: '3.0'
|
89
|
-
description:
|
95
|
+
description:
|
90
96
|
email:
|
91
97
|
- code@kate.io
|
92
98
|
executables: []
|
@@ -103,13 +109,16 @@ files:
|
|
103
109
|
- docs/multiple-state-machines-1.png
|
104
110
|
- docs/multiple-state-machines-2.png
|
105
111
|
- lib/aasm-diagram.rb
|
112
|
+
- lib/aasm_diagram/Rakefile
|
106
113
|
- lib/aasm_diagram/diagram.rb
|
114
|
+
- lib/aasm_diagram/railtie.rb
|
115
|
+
- lib/aasm_diagram/tasks/generate.rake
|
107
116
|
- lib/aasm_diagram/version.rb
|
108
117
|
homepage: https://github.com/katee/aasm-diagram
|
109
118
|
licenses:
|
110
119
|
- MIT
|
111
120
|
metadata: {}
|
112
|
-
post_install_message:
|
121
|
+
post_install_message:
|
113
122
|
rdoc_options: []
|
114
123
|
require_paths:
|
115
124
|
- lib
|
@@ -124,9 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
133
|
- !ruby/object:Gem::Version
|
125
134
|
version: '0'
|
126
135
|
requirements: []
|
127
|
-
|
128
|
-
|
129
|
-
signing_key:
|
136
|
+
rubygems_version: 3.1.2
|
137
|
+
signing_key:
|
130
138
|
specification_version: 4
|
131
139
|
summary: Automatically generate diagrams of AASM state machines.
|
132
140
|
test_files: []
|