wicked 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of wicked might be problematic. Click here for more details.

@@ -0,0 +1,12 @@
1
+ ## 0.1.0 (3/11/2012)
2
+
3
+ * Allow including `Wicked::Wizard` into controllers
4
+ * Added Tests for Helpers
5
+
6
+ ## 0.0.2
7
+
8
+ * Fixed url bug
9
+
10
+ ## 0.0.1
11
+
12
+ * First Release
data/Gemfile CHANGED
@@ -6,11 +6,12 @@ gem "rails" , ">= 3.0.7"
6
6
 
7
7
 
8
8
  group :development do
9
- gem 'jeweler', "~> 1.6.4"
10
- gem "bundler", "~> 1.0.0"
11
- gem "rcov", ">= 0"
9
+ gem 'jeweler', "~> 1.6.4"
10
+ gem "bundler", "~> 1.0.0"
11
+ gem "rcov", ">= 0"
12
12
  gem "capybara", ">= 0.4.0"
13
13
  gem "sqlite3"
14
+ gem "launchy"
14
15
  end
15
16
 
16
17
 
@@ -28,6 +28,7 @@ GEM
28
28
  activemodel (= 3.0.11)
29
29
  activesupport (= 3.0.11)
30
30
  activesupport (3.0.11)
31
+ addressable (2.2.7)
31
32
  arel (2.0.10)
32
33
  builder (2.1.2)
33
34
  capybara (1.1.2)
@@ -49,6 +50,8 @@ GEM
49
50
  git (>= 1.2.5)
50
51
  rake
51
52
  json (1.6.4)
53
+ launchy (2.0.5)
54
+ addressable (~> 2.2.6)
52
55
  mail (2.2.19)
53
56
  activesupport (>= 2.3.6)
54
57
  i18n (>= 0.4.0)
@@ -104,6 +107,7 @@ DEPENDENCIES
104
107
  bundler (~> 1.0.0)
105
108
  capybara (>= 0.4.0)
106
109
  jeweler (~> 1.6.4)
110
+ launchy
107
111
  rails (>= 3.0.7)
108
112
  rcov
109
113
  sqlite3
data/README.md CHANGED
@@ -1,39 +1,66 @@
1
1
  # Wicked
2
2
 
3
- Use wicked to make your Rails controllers into step-by-step wizards.
3
+ Use wicked to make your Rails controllers into step-by-step wizards. To see Wicked in action check out the example [Rails app](https://github.com/schneems/wicked_example) or [watch the screencast](http://schneems.com/post/18437886598/wizard-ify-your-rails-controllers-with-wicked).
4
4
 
5
5
  ## Why
6
6
 
7
- Many times I'm left wanting a restful way to display a step by step process that may or not be associated with a resource. Wicked gives the flexibility to do what I want while hiding all the really scary stuff you shouldn't do in a controller to make this possible.
7
+ Many times I'm left wanting a RESTful way to display a step by step process that may or not be associated with a resource. Wicked gives the flexibility to do what I want while hiding all the really scary stuff you shouldn't do in a controller to make this possible. At it's core Wicked is a RESTful(ish) state machine, but you don't need to know that, just use it.
8
8
 
9
9
  ## Install
10
10
 
11
11
  Add this to your Gemfile
12
12
 
13
13
  ```ruby
14
-
15
14
  gem 'wicked'
16
-
17
15
  ```
18
16
 
19
17
  Then run `bundle install` and you're ready to start
20
18
 
21
19
  ## How
22
20
 
23
- Simply inherit from Wicked::WizardController and you can specify a set of steps. Here we have a controller called Users::AfterSignupController with existing routes.
21
+ We are going to build an 'after signup' wizard. First create a controller:
22
+
23
+ ```
24
+ rails g controller after_signup
25
+ ```
26
+
27
+ Add Routes into `config/routes.rb`:
28
+
29
+ ```ruby
30
+ resources :after_signup
31
+ ```
32
+
33
+ Next include `Wicked::Wizard` in your controller
34
+
35
+ ```ruby
36
+
37
+ class AfterSignupController < ApplicationController
38
+ include Wicked::Wizard
39
+
40
+ steps :confirm_password, :confirm_profile, :find_friends
41
+ # ...
42
+
43
+ ```
44
+
45
+ You can also use the old way of inheriting from `Wicked::WizardController`.
24
46
 
25
47
  ```ruby
26
- class Users::AfterSignupController < Wicked::WizardController
48
+
49
+ class AfterSignupController < Wicked::WizardController
27
50
 
28
51
  steps :confirm_password, :confirm_profile, :find_friends
29
52
  # ...
30
53
 
31
54
  ```
32
55
 
33
- The wizard is set to call steps in order in the show action, you can specify custom logic in your show using a case statement like this:
56
+ The wizard is set to call steps in order in the show action, you can specify custom logic in your show using a case statement like below. To send someone to the first step in this wizard we can direct them to `after_signup_path(:confirm_password)`.
34
57
 
35
58
  ```ruby
36
- class Users::AfterSignupController < Wicked::WizardController
59
+ class AfterSignupController < ApplicationController
60
+ include Wicked::Wizard
61
+
62
+ steps :confirm_password, :confirm_profile, :find_friends
63
+
37
64
  def show
38
65
  @user = current_user
39
66
  case step
@@ -45,9 +72,9 @@ The wizard is set to call steps in order in the show action, you can specify cus
45
72
  end
46
73
  ```
47
74
 
48
- Note: you'll need to call `render_wizard` at the end of your action to get the correct views to show up.
75
+ You'll need to call `render_wizard` at the end of your action to get the correct views to show up.
49
76
 
50
- By default the wizard will render a view with the same name as the step. So for our controller `Users::AfterSignupController` with a view path of `/views/users/after_signup/` if call the :confirm_password step, our wizard will render `/views/users/after_signup/confirm_password.html.erb`
77
+ By default the wizard will render a view with the same name as the step. So for our controller `AfterSignupController` with a view path of `/views/users/after_signup/` if call the :confirm_password step, our wizard will render `/views/users/after_signup/confirm_password.html.erb`
51
78
 
52
79
  Then in your view you can use the helpers to get to the next step.
53
80
 
@@ -65,7 +92,10 @@ In addition to showing sequential views we can update elements in our controller
65
92
 
66
93
 
67
94
  ```ruby
68
- class Users::AfterSignupController < Wicked::WizardController
95
+ class AfterSignupController < ApplicationController
96
+ include Wicked::Wizard
97
+
98
+ steps :confirm_password, :confirm_profile, :find_friends
69
99
 
70
100
  def update
71
101
  @user = current_user
@@ -79,7 +109,7 @@ In addition to showing sequential views we can update elements in our controller
79
109
  end
80
110
  ```
81
111
 
82
- Note we're passing `render_wizard` our `@user` object here. If you pass an object into `render_wizard` it will show the next step if the object saves or re-render the previous view if it does not save.
112
+ We're passing `render_wizard` our `@user` object here. If you pass an object into `render_wizard` it will show the next step if the object saves or re-render the previous view if it does not save.
83
113
 
84
114
 
85
115
  To get to this update action, you simply need to submit a form that PUT's to the same url
@@ -95,7 +125,7 @@ To get to this update action, you simply need to submit a form that PUT's to the
95
125
 
96
126
  ```
97
127
 
98
- Note: we explicitly tell the form to PUT above
128
+ We explicitly tell the form to PUT above. If you forget this, you will get a warning about the create action not existing, or no route found for POST. Don't forget this.
99
129
 
100
130
 
101
131
  In the controller if you find that you want to skip a step, you can do it simply by calling `skip_step`
@@ -117,6 +147,46 @@ In the controller if you find that you want to skip a step, you can do it simply
117
147
 
118
148
  ```
119
149
 
150
+ Now you've got a fully functioning AfterSignup controller! If you have questions or if you struggled with something, let me know on [twitter](http://twitter.com/schneems), and i'll try to make it better or make the docs better.
151
+
152
+ ## Quick Reference
153
+
154
+ View/URL Helpers
155
+
156
+ ```ruby
157
+
158
+ wizard_path # Grabs the current path in the wizard
159
+ wizard_path(:specific_step) # Url of the :specific_step
160
+ next_wizard_path # Url of the next step
161
+
162
+ # These only work while in a Wizard, and are not absolute paths
163
+ # You can have multiple wizards in a project with multiple `wizard_path` calls
164
+ ```
165
+
166
+
167
+ Controller Tidbits:
168
+
169
+ ```ruby
170
+
171
+ steps :first, :second # Sets the order of steps
172
+ step # Gets symbol of current step
173
+ next_step # Gets symbol of next step
174
+ render_wizard # Renders the current step
175
+ render_wizard(@user) # Shows next_step if @user.save, otherwise renders current step
176
+ ```
177
+
178
+ Finally:
179
+
180
+ Don't forget to create your named views
181
+
182
+ ```
183
+ app/
184
+ views/
185
+ controller_name/
186
+ first.html.erb
187
+ second.html.erb
188
+ # ...
189
+ ```
120
190
 
121
191
  ## About
122
192
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.0
@@ -1,20 +1,40 @@
1
+ module Wicked
2
+ module Wizard
3
+ extend ActiveSupport::Concern
4
+
5
+ # Include the modules!!
6
+ include Wicked::Controller::Concerns::Path
7
+ include Wicked::Controller::Concerns::RenderRedirect
8
+ include Wicked::Controller::Concerns::Steps
9
+
10
+ included do
11
+ # Give our Views helper methods!
12
+ helper_method :wizard_path, :next_wizard_path
13
+ # Set @step and @next_step variables
14
+ before_filter :setup_wizard
15
+ end
16
+
17
+ private
18
+ def setup_wizard
19
+ @step = params[:id].try(:to_sym) || steps.first
20
+ @next_step = next_step(@step)
21
+ end
22
+ public
23
+ end
24
+ end
25
+
26
+
27
+
1
28
  # Please don't re-use any patterns found in this controller,
2
29
  # they work, but are not very good practices.
3
30
  # If you have a better way to do this, please let me know
4
31
 
5
32
  class Wicked::WizardController < ApplicationController
6
- include Wicked::Controller::Concerns::Path
7
- include Wicked::Controller::Concerns::RenderRedirect
8
- include Wicked::Controller::Concerns::Steps
9
-
10
-
11
- helper_method :wizard_path, :next_wizard_path
33
+ include Wicked::Wizard
12
34
 
13
- before_filter :setup_wizard
14
-
15
- def index
16
- # redirect_to_first_step
17
- end
35
+ # def index
36
+ # # redirect_to_first_step
37
+ # end
18
38
 
19
39
  # steps :confirm_password, :invite_fb
20
40
 
@@ -41,17 +61,5 @@ class Wicked::WizardController < ApplicationController
41
61
  # sign_in(@user, :bypass => true) # needed for devise
42
62
  # render_wizard
43
63
  # end
44
-
45
- private
46
-
47
-
48
- def setup_wizard
49
- @step = params[:id].try(:to_sym) || steps.first
50
- @next_step = next_step(@step)
51
- end
52
-
53
64
  end
54
65
 
55
- module Wicked
56
- Wizard = Wicked::WizardController
57
- end
@@ -0,0 +1,14 @@
1
+ ## This controller uses includes
2
+
3
+ class BarController < ApplicationController
4
+ include Wicked::Wizard
5
+ steps :first, :second, :last_step
6
+
7
+ def show
8
+ skip_step if params[:skip_step]
9
+ render_wizard
10
+ end
11
+
12
+ def update
13
+ end
14
+ end
@@ -1,3 +1,5 @@
1
+ ## This controller uses inheritance
2
+
1
3
  class FooController < Wicked::WizardController
2
4
  steps :first, :second, :last_step
3
5
 
@@ -0,0 +1,6 @@
1
+ first
2
+
3
+
4
+ <%= link_to 'last', wizard_path(:last_step) %>
5
+ <%= link_to 'current', wizard_path %>
6
+ <%= link_to 'skip', next_wizard_path %>
@@ -1,5 +1,7 @@
1
1
  Dummy::Application.routes.draw do
2
2
  resources :foo
3
+ resources :bar
4
+
3
5
  # The priority is based upon order of creation:
4
6
  # first created -> highest priority.
5
7
 
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class HelpersTest < ActiveSupport::IntegrationCase
4
+
5
+ test 'next_wizard_path' do
6
+ step = :first
7
+ visit(bar_path(step))
8
+ click_link 'skip'
9
+ assert has_content?(:third)
10
+ end
11
+
12
+ test 'wizard_path' do
13
+ step = :first
14
+ visit(bar_path(step))
15
+ click_link 'current'
16
+ assert has_content?(step)
17
+ end
18
+
19
+ test 'wizard_path with symbol arg' do
20
+ step = :first
21
+ visit(bar_path(step))
22
+ click_link 'last'
23
+ assert has_content?(:last_step)
24
+ end
25
+
26
+ end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class NavigationTest < ActiveSupport::IntegrationCase
3
+ class InheritNavigationTest < ActiveSupport::IntegrationCase
4
4
 
5
5
  test 'show first' do
6
6
  step = :first
@@ -34,3 +34,39 @@ class NavigationTest < ActiveSupport::IntegrationCase
34
34
  end
35
35
 
36
36
  end
37
+
38
+
39
+ class IncludeNavigationTest < ActiveSupport::IntegrationCase
40
+
41
+ test 'show first' do
42
+ step = :first
43
+ visit(bar_path(step))
44
+ assert has_content?(step)
45
+ end
46
+
47
+ test 'show second' do
48
+ step = :second
49
+ visit(bar_path(step))
50
+ assert has_content?(step)
51
+ end
52
+
53
+ test 'skip first' do
54
+ step = :first
55
+ visit(bar_path(step, :skip_step => 'true'))
56
+ assert has_content?(:second)
57
+ end
58
+
59
+ test 'invalid step' do
60
+ step = :notastep
61
+ assert_raise(ActionView::MissingTemplate) do
62
+ visit(bar_path(step))
63
+ end
64
+ end
65
+
66
+ test 'finish' do
67
+ step = :finish
68
+ visit(bar_path(step))
69
+ assert has_content?('home')
70
+ end
71
+
72
+ end
@@ -1,5 +1,5 @@
1
1
  # Define a bare test case to use with Capybara
2
2
  class ActiveSupport::IntegrationCase < ActiveSupport::TestCase
3
- include Capybara
3
+ include Capybara::DSL
4
4
  include Rails.application.routes.url_helpers
5
5
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wicked"
8
- s.version = "0.0.2"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["schneems"]
12
- s.date = "2012-02-23"
12
+ s.date = "2012-03-12"
13
13
  s.description = "Wicked is a Rails engine for producing easy wizard controllers"
14
14
  s.email = "richard.schneeman@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  ]
18
18
  s.files = [
19
19
  ".rvmrc",
20
+ "CHANGELOG.md",
20
21
  "Gemfile",
21
22
  "Gemfile.lock",
22
23
  "MIT-LICENSE",
@@ -31,8 +32,12 @@ Gem::Specification.new do |s|
31
32
  "lib/wicked/engine.rb",
32
33
  "test/dummy/Rakefile",
33
34
  "test/dummy/app/controllers/application_controller.rb",
35
+ "test/dummy/app/controllers/bar_controller.rb",
34
36
  "test/dummy/app/controllers/foo_controller.rb",
35
37
  "test/dummy/app/helpers/application_helper.rb",
38
+ "test/dummy/app/views/bar/first.html.erb",
39
+ "test/dummy/app/views/bar/last_step.html.erb",
40
+ "test/dummy/app/views/bar/second.html.erb",
36
41
  "test/dummy/app/views/foo/first.html.erb",
37
42
  "test/dummy/app/views/foo/last_step.html.erb",
38
43
  "test/dummy/app/views/foo/second.html.erb",
@@ -65,6 +70,7 @@ Gem::Specification.new do |s|
65
70
  "test/dummy/public/javascripts/rails.js",
66
71
  "test/dummy/public/stylesheets/.gitkeep",
67
72
  "test/dummy/script/rails",
73
+ "test/integration/helpers_test.rb",
68
74
  "test/integration/navigation_test.rb",
69
75
  "test/support/integration_case.rb",
70
76
  "test/test_helper.rb",
@@ -88,6 +94,7 @@ Gem::Specification.new do |s|
88
94
  s.add_development_dependency(%q<rcov>, [">= 0"])
89
95
  s.add_development_dependency(%q<capybara>, [">= 0.4.0"])
90
96
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
97
+ s.add_development_dependency(%q<launchy>, [">= 0"])
91
98
  else
92
99
  s.add_dependency(%q<activesupport>, [">= 3.0.7"])
93
100
  s.add_dependency(%q<rails>, [">= 3.0.7"])
@@ -96,6 +103,7 @@ Gem::Specification.new do |s|
96
103
  s.add_dependency(%q<rcov>, [">= 0"])
97
104
  s.add_dependency(%q<capybara>, [">= 0.4.0"])
98
105
  s.add_dependency(%q<sqlite3>, [">= 0"])
106
+ s.add_dependency(%q<launchy>, [">= 0"])
99
107
  end
100
108
  else
101
109
  s.add_dependency(%q<activesupport>, [">= 3.0.7"])
@@ -105,6 +113,7 @@ Gem::Specification.new do |s|
105
113
  s.add_dependency(%q<rcov>, [">= 0"])
106
114
  s.add_dependency(%q<capybara>, [">= 0.4.0"])
107
115
  s.add_dependency(%q<sqlite3>, [">= 0"])
116
+ s.add_dependency(%q<launchy>, [">= 0"])
108
117
  end
109
118
  end
110
119
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-23 00:00:00.000000000Z
12
+ date: 2012-03-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70154437447840 !ruby/object:Gem::Requirement
16
+ requirement: &70095570564240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70154437447840
24
+ version_requirements: *70095570564240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &70154437447360 !ruby/object:Gem::Requirement
27
+ requirement: &70095570563680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70154437447360
35
+ version_requirements: *70095570563680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &70154437464020 !ruby/object:Gem::Requirement
38
+ requirement: &70095570563180 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70154437464020
46
+ version_requirements: *70095570563180
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70154437463540 !ruby/object:Gem::Requirement
49
+ requirement: &70095570562640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70154437463540
57
+ version_requirements: *70095570562640
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &70154437463060 !ruby/object:Gem::Requirement
60
+ requirement: &70095570562160 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70154437463060
68
+ version_requirements: *70095570562160
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: capybara
71
- requirement: &70154437462580 !ruby/object:Gem::Requirement
71
+ requirement: &70095570561660 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70154437462580
79
+ version_requirements: *70095570561660
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sqlite3
82
- requirement: &70154437462100 !ruby/object:Gem::Requirement
82
+ requirement: &70095570561180 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,18 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70154437462100
90
+ version_requirements: *70095570561180
91
+ - !ruby/object:Gem::Dependency
92
+ name: launchy
93
+ requirement: &70095570560700 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70095570560700
91
102
  description: Wicked is a Rails engine for producing easy wizard controllers
92
103
  email: richard.schneeman@gmail.com
93
104
  executables: []
@@ -96,6 +107,7 @@ extra_rdoc_files:
96
107
  - README.md
97
108
  files:
98
109
  - .rvmrc
110
+ - CHANGELOG.md
99
111
  - Gemfile
100
112
  - Gemfile.lock
101
113
  - MIT-LICENSE
@@ -110,8 +122,12 @@ files:
110
122
  - lib/wicked/engine.rb
111
123
  - test/dummy/Rakefile
112
124
  - test/dummy/app/controllers/application_controller.rb
125
+ - test/dummy/app/controllers/bar_controller.rb
113
126
  - test/dummy/app/controllers/foo_controller.rb
114
127
  - test/dummy/app/helpers/application_helper.rb
128
+ - test/dummy/app/views/bar/first.html.erb
129
+ - test/dummy/app/views/bar/last_step.html.erb
130
+ - test/dummy/app/views/bar/second.html.erb
115
131
  - test/dummy/app/views/foo/first.html.erb
116
132
  - test/dummy/app/views/foo/last_step.html.erb
117
133
  - test/dummy/app/views/foo/second.html.erb
@@ -144,6 +160,7 @@ files:
144
160
  - test/dummy/public/javascripts/rails.js
145
161
  - test/dummy/public/stylesheets/.gitkeep
146
162
  - test/dummy/script/rails
163
+ - test/integration/helpers_test.rb
147
164
  - test/integration/navigation_test.rb
148
165
  - test/support/integration_case.rb
149
166
  - test/test_helper.rb
@@ -164,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
181
  version: '0'
165
182
  segments:
166
183
  - 0
167
- hash: 1786234786228155746
184
+ hash: -426714060281947248
168
185
  required_rubygems_version: !ruby/object:Gem::Requirement
169
186
  none: false
170
187
  requirements: