simple_workflow 1.3.1 → 1.3.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
2
  SHA1:
3
- metadata.gz: a401f2ff7174eab0a404f384aaf5cf6e0145c4df
4
- data.tar.gz: 2c7550459676d6176f5ef806b936cea4d5f5ffe6
3
+ metadata.gz: df30a1c9f24abcc2eed8341f903f43dc726dfa0c
4
+ data.tar.gz: 7a67d053ee88dcb7860b3b3bc0046b633610913c
5
5
  SHA512:
6
- metadata.gz: 735d22fee950b342604df519018045b16df0edb84cb1b6d2704459577415a0843c705a46cdd9727042904d15b2a337414b8ff59bf8e09a94ce2083e52dd41762
7
- data.tar.gz: 36563aade7344805d5a6995f298a07cfa6a6f1b409547c2cd184dbe5edd607aea6ea891f6d2cdad737f137b8cce91acef4a1fc694cc8fa2696baec47c0ea7bf2
6
+ metadata.gz: 31b7fde7ad4ae7b569b85b4b625621cb10e7f5878c0d27311c3fb2f79afa78e9b1f21c8c091197be3090e79848e45daa527b02f076d194bf808de51898badd50
7
+ data.tar.gz: 1d33d84a1ad300aeca822ca9f821362ed896f0c37505de24e3ea34589f816911b834b936a90bd88257596a4516ae4d702ee6df5d25547383deee2bb9828429d0
data/Gemfile.lock CHANGED
@@ -1,45 +1,45 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_workflow (1.3.0)
4
+ simple_workflow (1.3.2)
5
5
  rails (>= 4, < 5.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (5.0.1)
11
- actionpack (= 5.0.1)
12
- nio4r (~> 1.2)
10
+ actioncable (5.0.2)
11
+ actionpack (= 5.0.2)
12
+ nio4r (>= 1.2, < 3.0)
13
13
  websocket-driver (~> 0.6.1)
14
- actionmailer (5.0.1)
15
- actionpack (= 5.0.1)
16
- actionview (= 5.0.1)
17
- activejob (= 5.0.1)
14
+ actionmailer (5.0.2)
15
+ actionpack (= 5.0.2)
16
+ actionview (= 5.0.2)
17
+ activejob (= 5.0.2)
18
18
  mail (~> 2.5, >= 2.5.4)
19
19
  rails-dom-testing (~> 2.0)
20
- actionpack (5.0.1)
21
- actionview (= 5.0.1)
22
- activesupport (= 5.0.1)
20
+ actionpack (5.0.2)
21
+ actionview (= 5.0.2)
22
+ activesupport (= 5.0.2)
23
23
  rack (~> 2.0)
24
24
  rack-test (~> 0.6.3)
25
25
  rails-dom-testing (~> 2.0)
26
26
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (5.0.1)
28
- activesupport (= 5.0.1)
27
+ actionview (5.0.2)
28
+ activesupport (= 5.0.2)
29
29
  builder (~> 3.1)
30
30
  erubis (~> 2.7.0)
31
31
  rails-dom-testing (~> 2.0)
32
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
33
- activejob (5.0.1)
34
- activesupport (= 5.0.1)
32
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
+ activejob (5.0.2)
34
+ activesupport (= 5.0.2)
35
35
  globalid (>= 0.3.6)
36
- activemodel (5.0.1)
37
- activesupport (= 5.0.1)
38
- activerecord (5.0.1)
39
- activemodel (= 5.0.1)
40
- activesupport (= 5.0.1)
36
+ activemodel (5.0.2)
37
+ activesupport (= 5.0.2)
38
+ activerecord (5.0.2)
39
+ activemodel (= 5.0.2)
40
+ activesupport (= 5.0.2)
41
41
  arel (~> 7.0)
42
- activesupport (5.0.1)
42
+ activesupport (5.0.2)
43
43
  concurrent-ruby (~> 1.0, >= 1.0.2)
44
44
  i18n (~> 0.7)
45
45
  minitest (~> 5.1)
@@ -47,15 +47,14 @@ GEM
47
47
  ansi (1.5.0)
48
48
  arel (7.1.4)
49
49
  ast (2.3.0)
50
- builder (3.2.2)
51
- concurrent-ruby (1.0.3)
50
+ builder (3.2.3)
51
+ concurrent-ruby (1.0.5)
52
52
  docile (1.1.5)
53
53
  erubis (2.7.0)
54
54
  globalid (0.3.7)
55
55
  activesupport (>= 4.1.0)
56
- i18n (0.7.0)
57
- json (2.0.2)
58
- json (2.0.2-java)
56
+ i18n (0.8.1)
57
+ json (2.0.3)
59
58
  loofah (2.0.3)
60
59
  nokogiri (>= 1.5.9)
61
60
  mail (2.6.4)
@@ -66,53 +65,53 @@ GEM
66
65
  mime-types-data (3.2016.0521)
67
66
  mini_portile2 (2.1.0)
68
67
  minitest (5.10.1)
69
- minitest-reporters (1.1.13)
68
+ minitest-reporters (1.1.14)
70
69
  ansi
71
70
  builder
72
71
  minitest (>= 5.0)
73
72
  ruby-progressbar
74
- nio4r (1.2.1)
75
- nokogiri (1.6.8.1)
73
+ nio4r (2.0.0)
74
+ nokogiri (1.7.1)
76
75
  mini_portile2 (~> 2.1.0)
77
- parser (2.3.3.1)
76
+ parser (2.4.0.0)
78
77
  ast (~> 2.2)
79
78
  powerpack (0.1.1)
80
79
  rack (2.0.1)
81
80
  rack-test (0.6.3)
82
81
  rack (>= 1.0)
83
- rails (5.0.1)
84
- actioncable (= 5.0.1)
85
- actionmailer (= 5.0.1)
86
- actionpack (= 5.0.1)
87
- actionview (= 5.0.1)
88
- activejob (= 5.0.1)
89
- activemodel (= 5.0.1)
90
- activerecord (= 5.0.1)
91
- activesupport (= 5.0.1)
82
+ rails (5.0.2)
83
+ actioncable (= 5.0.2)
84
+ actionmailer (= 5.0.2)
85
+ actionpack (= 5.0.2)
86
+ actionview (= 5.0.2)
87
+ activejob (= 5.0.2)
88
+ activemodel (= 5.0.2)
89
+ activerecord (= 5.0.2)
90
+ activesupport (= 5.0.2)
92
91
  bundler (>= 1.3.0, < 2.0)
93
- railties (= 5.0.1)
92
+ railties (= 5.0.2)
94
93
  sprockets-rails (>= 2.0.0)
95
- rails-dom-testing (2.0.1)
94
+ rails-dom-testing (2.0.2)
96
95
  activesupport (>= 4.2.0, < 6.0)
97
- nokogiri (~> 1.6.0)
96
+ nokogiri (~> 1.6)
98
97
  rails-html-sanitizer (1.0.3)
99
98
  loofah (~> 2.0)
100
- railties (5.0.1)
101
- actionpack (= 5.0.1)
102
- activesupport (= 5.0.1)
99
+ railties (5.0.2)
100
+ actionpack (= 5.0.2)
101
+ activesupport (= 5.0.2)
103
102
  method_source
104
103
  rake (>= 0.8.7)
105
104
  thor (>= 0.18.1, < 2.0)
106
- rainbow (2.1.0)
105
+ rainbow (2.2.1)
107
106
  rake (12.0.0)
108
- rubocop (0.46.0)
109
- parser (>= 2.3.1.1, < 3.0)
107
+ rubocop (0.47.1)
108
+ parser (>= 2.3.3.1, < 3.0)
110
109
  powerpack (~> 0.1)
111
110
  rainbow (>= 1.99.1, < 3.0)
112
111
  ruby-progressbar (~> 1.7)
113
112
  unicode-display_width (~> 1.0, >= 1.0.1)
114
113
  ruby-progressbar (1.8.1)
115
- simplecov (0.12.0)
114
+ simplecov (0.14.1)
116
115
  docile (~> 1.1.0)
117
116
  json (>= 1.8, < 3)
118
117
  simplecov-html (~> 0.10.0)
@@ -125,16 +124,15 @@ GEM
125
124
  activesupport (>= 4.0)
126
125
  sprockets (>= 3.0.0)
127
126
  thor (0.19.4)
128
- thread_safe (0.3.5)
129
- tzinfo (1.2.2)
127
+ thread_safe (0.3.6)
128
+ tzinfo (1.2.3)
130
129
  thread_safe (~> 0.1)
131
- unicode-display_width (1.1.2)
132
- websocket-driver (0.6.4)
130
+ unicode-display_width (1.1.3)
131
+ websocket-driver (0.6.5)
133
132
  websocket-extensions (>= 0.1.0)
134
133
  websocket-extensions (0.1.2)
135
134
 
136
135
  PLATFORMS
137
- java
138
136
  ruby
139
137
 
140
138
  DEPENDENCIES
@@ -144,4 +142,4 @@ DEPENDENCIES
144
142
  simplecov (~> 0.9)
145
143
 
146
144
  BUNDLED WITH
147
- 1.13.6
145
+ 1.14.6
@@ -53,21 +53,20 @@ module SimpleWorkflow::Controller
53
53
  flash[:notice] = notice
54
54
  end
55
55
 
56
- if (other_flashes = response_status_and_flash.delete(:flash))
57
- flash.update(other_flashes)
58
- end
56
+ return unless (other_flashes = response_status_and_flash.delete(:flash))
57
+ flash.update(other_flashes)
59
58
  end
60
59
  private :save_flash
61
60
 
62
61
  def redirect_to_post(options)
63
62
  url = url_for options
64
- render text: <<EOF, layout: false
65
- <html>
66
- <body onload="document.getElementById('form').submit()">
67
- <form id="form" action="#{url}" method="POST">
68
- </form>
69
- </body>
70
- </html>
63
+ render text: <<EOF.strip_heredoc, layout: false
64
+ <html>
65
+ <body onload="document.getElementById('form').submit()">
66
+ <form id="form" action="#{url}" method="POST">
67
+ </form>
68
+ </body>
69
+ </html>
71
70
  EOF
72
71
  end
73
72
  end
@@ -1,4 +1,7 @@
1
+ require_relative 'detour'
1
2
  module SimpleWorkflow::Helper
3
+ include SimpleWorkflow::Detour
4
+
2
5
  def image_button_to(image_source, title, options, html_options = {})
3
6
  image_submit_tag image_source, { class: 'image-submit', alt: title, title: title,
4
7
  id: "#{title}_#{options[:id]}", name: title,
@@ -33,7 +36,7 @@ module SimpleWorkflow::Helper
33
36
  end
34
37
 
35
38
  def origin_options
36
- params.reject { |k, _v| [:detour, :return_from_detour].include? k.to_sym }
39
+ params.reject { |k, _v| %i(detour return_from_detour).include? k.to_sym }
37
40
  end
38
41
 
39
42
  def image_detour_to(image_source, title, url_options, image_options = nil, link_options = nil)
@@ -70,14 +73,24 @@ module SimpleWorkflow::Helper
70
73
 
71
74
  def back_or_link_to(title, options = nil, html_options = nil)
72
75
  if session[:detours]
73
- options = { return_from_detour: true }.update(session[:detours].last)
76
+ link_options = { return_from_detour: true }.update(session[:detours].last)
74
77
 
75
78
  # FIXME(uwe): Write a test to prove this line is needed.
76
- options['id'] ||= nil
79
+ link_options['id'] ||= nil
77
80
  # EMXIF
78
81
 
79
- logger.debug "linked return from detour: #{options.inspect}"
82
+ logger.debug "linked return from detour: #{link_options.inspect}"
83
+ else
84
+ link_options = options
85
+ end
86
+
87
+ link_to(title, link_options, html_options) if options
88
+ rescue ActionController::UrlGenerationError => e
89
+ if session[:detours]
90
+ logger.error "Exception linking to origin: #{e.class} #{e}"
91
+ pop_detour(session)
92
+ retry
80
93
  end
81
- link_to(title, options, html_options) if options
94
+ raise
82
95
  end
83
96
  end
@@ -38,33 +38,30 @@ class SimpleWorkflow::Middleware
38
38
  end
39
39
 
40
40
  def remove_old_detours(env)
41
- if session(env).instance_variable_get('@by').is_a?(ActionDispatch::Session::CookieStore)
42
- session_size = workflow_size = nil
43
- session = session(env)
44
- # env[ActionDispatch::Cookies::COOKIES_SERIALIZER]
45
- cookie_jar = cookie_jar(env)
46
- encryptor = encryptor(env)
47
- loop do
48
- ser_val = serialize_session(cookie_jar, session.to_hash)
49
- session_size = encryptor.encrypt_and_sign(ser_val).size
50
- wf_ser_val = serialize_session(cookie_jar, session[:detours])
51
- workflow_size = encryptor.encrypt_and_sign(wf_ser_val).size
52
- break unless workflow_size >= 2048 || (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
53
- Rails.logger.warn "Workflow too large (#{workflow_size}/#{session_size}). Dropping oldest detour."
54
- session[:detours].shift
55
- reset_workflow(session) if session[:detours].empty?
56
- end
57
- Rails.logger.debug "session: #{session_size} bytes, workflow(#{session[:detours].try(:size) || 0}): #{workflow_size} bytes"
58
- if session_size > 4096
59
- Rails.logger.warn "simple_workflow: session exceeds cookie size limit: #{session_size} bytes. Workflow empty! Not My Fault!"
60
- Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
61
- if (old_flashes = session[:flash] && session[:flash]['discard'])
62
- Rails.logger.warn "simple_workflow: found discarded flash entries: #{old_flashes}. Deleting them."
63
- session[:flash]['flashes'] = session[:flash]['flashes'].except(*old_flashes)
64
- Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
65
- end
66
- end
41
+ return unless session(env).instance_variable_get('@by').is_a?(ActionDispatch::Session::CookieStore)
42
+ session_size = workflow_size = nil
43
+ session = session(env)
44
+ # env[ActionDispatch::Cookies::COOKIES_SERIALIZER]
45
+ cookie_jar = cookie_jar(env)
46
+ encryptor = encryptor(env)
47
+ loop do
48
+ ser_val = serialize_session(cookie_jar, session.to_hash)
49
+ session_size = encryptor.encrypt_and_sign(ser_val).size
50
+ wf_ser_val = serialize_session(cookie_jar, session[:detours])
51
+ workflow_size = encryptor.encrypt_and_sign(wf_ser_val).size
52
+ break unless workflow_size >= 2048 || (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
53
+ Rails.logger.warn "Workflow too large (#{workflow_size}/#{session_size}). Dropping oldest detour."
54
+ session[:detours].shift
55
+ reset_workflow(session) if session[:detours].empty?
67
56
  end
57
+ Rails.logger.debug "session: #{session_size} bytes, workflow(#{session[:detours].try(:size) || 0}): #{workflow_size} bytes"
58
+ return unless session_size > 4096
59
+ Rails.logger.warn "simple_workflow: session exceeds cookie size limit: #{session_size} bytes. Workflow empty! Not My Fault!"
60
+ Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
61
+ return unless (old_flashes = session[:flash] && session[:flash]['discard'])
62
+ Rails.logger.warn "simple_workflow: found discarded flash entries: #{old_flashes}. Deleting them."
63
+ session[:flash]['flashes'] = session[:flash]['flashes'].except(*old_flashes)
64
+ Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
68
65
  end
69
66
 
70
67
  if ActionPack::VERSION::MAJOR == 5
@@ -96,8 +93,7 @@ class SimpleWorkflow::Middleware
96
93
  if params(env)[:detour]
97
94
  store_detour_in_session(session(env), params(env)[:detour])
98
95
  end
99
- if params(env)[:return_from_detour] && session(env)[:detours]
100
- pop_detour(session(env))
101
- end
96
+ return unless params(env)[:return_from_detour] && session(env)[:detours]
97
+ pop_detour(session(env))
102
98
  end
103
99
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleWorkflow
2
- VERSION = '1.3.1'.freeze
2
+ VERSION = '1.3.2'.freeze
3
3
  end
data/test/helper_test.rb CHANGED
@@ -35,17 +35,42 @@ class HelperTest < MiniTest::Test
35
35
  image_link_to('my_image.png', 'Link Title', { id: 'image_tag_id' }, title: 'Image title')
36
36
  end
37
37
 
38
+ def test_back_or_link_to
39
+ assert_equal ['Link title', { controller: :mycontroller, action: :my_action }, nil],
40
+ back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
41
+ end
42
+
43
+ def test_back_or_link_to_with_routing_error
44
+ @session = { detours: [{ controller: :does_not_exist }] }
45
+ @routing_error = ActionController::UrlGenerationError
46
+ assert_equal ['Link title', { controller: :mycontroller, action: :my_action }, nil],
47
+ back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
48
+ end
49
+
38
50
  private
39
51
 
52
+ def logger
53
+ @logger ||= Logger.new(File.expand_path('../log/test.log', __dir__))
54
+ end
55
+
40
56
  def params
41
57
  { controller: 'mycontroller', action: 'myaction', id: 42, query: { nested: 'criterium' } }
42
58
  end
43
59
 
60
+ def session
61
+ @session ||= {}
62
+ end
63
+
44
64
  def url_for(options)
45
65
  options.to_s
46
66
  end
47
67
 
48
68
  def link_to(*options)
69
+ if defined?(@routing_error) && @routing_error
70
+ e = @routing_error
71
+ @routing_error = nil
72
+ raise e
73
+ end
49
74
  options
50
75
  end
51
76
 
@@ -54,12 +54,14 @@ class MiddlewareTest < MiniTest::Test
54
54
  assert_equal 'app response', response
55
55
  assert_equal(%w(session_id detours), env['rack.session'].to_hash.keys)
56
56
 
57
- assert_equal([{ 'controller' => 'test_57' }, { 'controller' => 'test_58' }, { 'controller' => 'test_59' }, { 'controller' => 'test_60' }, { 'controller' => 'test_61' }, { 'controller' => 'test_62' }, { 'controller' => 'test_63' }, { 'controller' => 'test_64' }, { 'controller' => 'test_65' }, { 'controller' => 'test_66' }, { 'controller' => 'test_67' }, { 'controller' => 'test_68' }, { 'controller' => 'test_69' }, { 'controller' => 'test_70' }, { 'controller' => 'test_71' }, { 'controller' => 'test_72' }, { 'controller' => 'test_73' }, { 'controller' => 'test_74' }, { 'controller' => 'test_75' }, { 'controller' => 'test_76' }, { 'controller' => 'test_77' }, { 'controller' => 'test_78' }, { 'controller' => 'test_79' }, { 'controller' => 'test_80' }, { 'controller' => 'test_81' }, { 'controller' => 'test_82' }, { 'controller' => 'test_83' }, { 'controller' => 'test_84' }, { 'controller' => 'test_85' }, { 'controller' => 'test_86' }, { 'controller' => 'test_87' }, { 'controller' => 'test_88' }, { 'controller' => 'test_89' }, { 'controller' => 'test_90' }, { 'controller' => 'test_91' }, { 'controller' => 'test_92' }, { 'controller' => 'test_93' }, { 'controller' => 'test_94' }, { 'controller' => 'test_95' }, { 'controller' => 'test_96' }, { 'controller' => 'test_97' }, { 'controller' => 'test_98' }, { 'controller' => 'test_99' }, { 'controller' => 'test_last' }],
57
+ assert_equal(((57..99).to_a + [:last]).map { |i| { 'controller' => "test_#{i}" } },
58
58
  env['rack.session'].to_hash['detours'])
59
59
  end
60
60
 
61
61
  def test_huge_detour_over_4k
62
+ # rubocop:disable Metrics/LineLength
62
63
  query = "/orders/TeYphD2wcYyBDFaKTnmAog/edit?detour%5Baction%5D=index&detour%5Bcommit%5D=Search&detour%5Bcontroller%5D=order_drilldown&detour%5Bdrilldown_search%5D%5Bdimensions%5D%5B%5D=arrival&detour%5Bdrilldown_search%5D%5Bdimensions%5D%5B%5D=delay&detour%5Bdrilldown_search%5D%5Bdisplay_type%5D=NONE&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bactual_time%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bcomments%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bdelay%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bdescription%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bdirection%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bdrop_off_stand%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bestimated%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bfirst_vehicle%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bofb%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bonb%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Boperation%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bpick_up%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bpick_up_stand%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bplanned%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bprobable%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bscheduled%5D=1&detour%5Bdrilldown_search%5D%5Bfields%5D%5Bsta%5D=0&detour%5Bdrilldown_search%5D%5Bfields%5D%5Btime%5D=0&detour%5Bdrilldown_search%5D%5Bfilter%5D%5Barrival%5D%5B%5D=Arrival&detour%5Bdrilldown_search%5D%5Bfilter%5D%5Barrival%5D%5B%5D=Departure&detour%5Bdrilldown_search%5D%5Bfilter%5D%5Bcalendar_date%5D%5B%5D=2016-03-01&detour%5Bdrilldown_search%5D%5Blist%5D=1&detour%5Bdrilldown_search%5D%5Blist_change_times%5D=0&detour%5Bdrilldown_search%5D%5Border_by_value%5D=0&detour%5Bdrilldown_search%5D%5Bpercent%5D=1&detour%5Bdrilldown_search%5D%5Bselect_value%5D=COUNT&detour%5Bdrilldown_search%5D%5Btitle%5D=OSL+Daily+Delay+Report+2016-04-16#{'+etc' * 200}&detour%5Butf8%5D=%E2%9C%93"
64
+ # rubocop:enable Metrics/LineLength
63
65
  env = env_for(query)
64
66
 
65
67
  status, headers, response = @stack.call env
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-23 00:00:00.000000000 Z
11
+ date: 2017-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  requirements: []
118
118
  rubyforge_project: donv/simple_workflow
119
- rubygems_version: 2.5.1
119
+ rubygems_version: 2.6.11
120
120
  signing_key:
121
121
  specification_version: 4
122
122
  summary: Add simple breadcrumbs "detour" workflow to Ruby On Rails.