aasm-diagram 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: []