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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 19ab5bb163d998949ffe56f47041a3d0d27f8bda
4
- data.tar.gz: 5bc368e78cb78526aa765335d1caf623e45765c6
2
+ SHA256:
3
+ metadata.gz: 60cce49c3986317422d3b5385239b00e250ad462430fa9711994fc9b0b4839d8
4
+ data.tar.gz: 18fe0ac14dd690b7c51570e1afbe0ca54c70ea5c6200bc539813750072ec2c1a
5
5
  SHA512:
6
- metadata.gz: 5bf93420985ed58f256fc541628112072525934d4f494cee4002a05be8c83f4292d80adfce659e65a771e109715f61505f5884e7b14d55876fb5ff0aee6cdeaa
7
- data.tar.gz: bba5da0c27d949db9e51c60624cea4b5fe36b4d255af8776bdc43760935a9453112201a537b08f368f84214797307523a636e3d42ffd84043efe0ac430dc1515
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
- * 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`.
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', '~> 10.0'
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
@@ -3,3 +3,5 @@ require 'graphviz'
3
3
 
4
4
  require 'aasm_diagram/version'
5
5
  require 'aasm_diagram/diagram'
6
+
7
+ require 'aasm_diagram/railtie' if defined?(Rails)
@@ -0,0 +1,4 @@
1
+ require 'aasm-diagram'
2
+
3
+ path = File.expand_path(__dir__)
4
+ Dir.glob("#{path}/tasks/*.rake").each { |f| import f }
@@ -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
@@ -1,3 +1,3 @@
1
1
  module AASMDiagram
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
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.2
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: 2018-10-20 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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
- rubyforge_project:
128
- rubygems_version: 2.6.13
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: []