stepper 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +33 -6
- data/VERSION +1 -1
- data/lib/stepper.rb +0 -2
- data/lib/stepper/controllers/controller_additions.rb +32 -6
- data/lib/stepper/controllers/controller_resource.rb +9 -1
- data/lib/stepper/helper/action_view_additions.rb +17 -0
- data/lib/stepper/models/active_record_additions.rb +69 -6
- data/stepper.gemspec +4 -2
- data/test/controllers/controller_test.rb +10 -2
- data/test/models/sti_test.rb +11 -0
- data/test/rails_app/app/models/big_company.rb +4 -0
- metadata +25 -23
data/README.rdoc
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
= Stepper
|
2
2
|
|
3
|
-
Stepper is multistep form (wizard) solution for Rails 3.
|
3
|
+
Stepper is multistep form (wizard) solution for Rails 3.1.
|
4
4
|
Stepper allows you to split up your large form into series of pages that users can navigate through to complete the form and save it state.
|
5
5
|
== Installation
|
6
|
-
You can use it with Rails 3:
|
6
|
+
You can use it with Rails 3.1:
|
7
7
|
|
8
8
|
gem install stepper
|
9
9
|
== Getting Started
|
@@ -15,16 +15,21 @@ Create migration for model:
|
|
15
15
|
|
16
16
|
Setup names of steps that you want to have:
|
17
17
|
|
18
|
-
|
18
|
+
class Company < ActiveRecord::Base
|
19
|
+
has_steps :steps => %w{ description kind address }
|
20
|
+
end
|
19
21
|
|
20
|
-
Setup validation for each step if necessary, method should have name like <tt>
|
22
|
+
Setup validation for each step if necessary, method should have name like <tt>validate_#{step_name}</tt>:
|
21
23
|
|
22
|
-
def
|
24
|
+
def validate_description
|
23
25
|
self.validates_presence_of :name
|
26
|
+
self.validates_presence_of :desc
|
24
27
|
end
|
25
28
|
|
26
|
-
def
|
29
|
+
def validate_address
|
27
30
|
self.validates_presence_of :city
|
31
|
+
self.validates_presence_of :country
|
32
|
+
self.validates_presence_of :address
|
28
33
|
end
|
29
34
|
|
30
35
|
def validate_kind
|
@@ -56,17 +61,39 @@ Add stepper helper method into the form in view that rendered by new action:
|
|
56
61
|
|
57
62
|
<%= f.label :name %>
|
58
63
|
<%= f.text_field :name %>
|
64
|
+
<%= f.label :desc %>
|
65
|
+
<%= f.text_field :desc %>
|
59
66
|
|
60
67
|
+city_step.html.erb+
|
61
68
|
|
62
69
|
<%= f.label :city %>
|
63
70
|
<%= f.text_field :city %>
|
71
|
+
<%= f.label :country %>
|
72
|
+
<%= f.text_field :country %>
|
73
|
+
<%= f.label :city %>
|
74
|
+
<%= f.text_field :city %>
|
64
75
|
|
65
76
|
+kind_step.html.erb+
|
66
77
|
|
67
78
|
<%= f.label :kind %>
|
68
79
|
<%= f.text_field :kind %>
|
69
80
|
|
81
|
+
+stepper+ helper creates buttons "Next", "Previous", "Save" and "Finish" as well. You can change button names just add to your locales:
|
82
|
+
|
83
|
+
en:
|
84
|
+
stepper:
|
85
|
+
next_step: 'Next step'
|
86
|
+
previous_step: 'Previous step'
|
87
|
+
save: 'Finish later'
|
88
|
+
finish: 'Finish'
|
89
|
+
|
90
|
+
+next_step+ button validates, saves current step and renders next step of form;
|
91
|
+
+previous_step+ saves current step and renders previous step of form;
|
92
|
+
+save+ save current step and redirects to index page;
|
93
|
+
+finish+ is showed only for last step instead of +next_step+ button and it validates, saves last step and redirects to show.
|
94
|
+
|
95
|
+
If you want to have other partial for buttons than add partial to: +app/views/stepper/_fields.html.erb+
|
96
|
+
|
70
97
|
== Contributing to stepper
|
71
98
|
|
72
99
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/stepper.rb
CHANGED
@@ -6,6 +6,21 @@ module Stepper
|
|
6
6
|
end
|
7
7
|
|
8
8
|
module ClassMethods
|
9
|
+
# Sets up +create+, +update+, +new+ actions for controller and before filter for load resource.
|
10
|
+
# If you use cancan or load resource in other way it will get loaded resource.
|
11
|
+
#
|
12
|
+
# First parameters can be name of resource, for example:
|
13
|
+
#
|
14
|
+
# class CompaniesController < ApplicationController
|
15
|
+
# has_steps :my_company
|
16
|
+
# end
|
17
|
+
# It will load or build resource in +@my_company+ variable
|
18
|
+
#
|
19
|
+
# First argument it isn't required:
|
20
|
+
# class CompaniesController < ApplicationController
|
21
|
+
# has_steps
|
22
|
+
# end
|
23
|
+
# In this case resource will be loaded or built into +@company+ variable
|
9
24
|
def has_steps(*args)
|
10
25
|
include InstanceMethods
|
11
26
|
stepper_resource_class.add_before_filter(self, *args)
|
@@ -19,6 +34,8 @@ module Stepper
|
|
19
34
|
|
20
35
|
module InstanceMethods
|
21
36
|
|
37
|
+
# controller +create+ action
|
38
|
+
# it supports only html responce format for now
|
22
39
|
def create
|
23
40
|
respond_to do |format|
|
24
41
|
if @_stepper_resource_instance.save
|
@@ -30,8 +47,9 @@ module Stepper
|
|
30
47
|
end
|
31
48
|
end
|
32
49
|
|
50
|
+
# controller +update+ action
|
51
|
+
# it supports only html responce format for now
|
33
52
|
def update
|
34
|
-
|
35
53
|
@_stepper_resource_instance.previous_step!.previous_step! if params[:commit] == t('stepper.previous_step').html_safe
|
36
54
|
|
37
55
|
@_stepper_resource_instance.previous_step! if params[:commit] == t('stepper.save').html_safe
|
@@ -46,25 +64,33 @@ module Stepper
|
|
46
64
|
end
|
47
65
|
end
|
48
66
|
|
67
|
+
# controller +new+ action
|
68
|
+
# it supports only html responce format for now
|
49
69
|
def new
|
70
|
+
redirect_to :action => :show, :id => @_stepper_resource_instance.id if @_stepper_resource_instance.last_step?
|
50
71
|
end
|
51
72
|
|
52
73
|
protected
|
53
|
-
|
74
|
+
# redirects to controller actions depends of commit value
|
75
|
+
# save -> index
|
76
|
+
# previous_step -> new
|
77
|
+
# next_step -> new
|
78
|
+
# finish -> show
|
54
79
|
def redirect_steps
|
55
80
|
if params[:commit] == t('stepper.save').html_safe
|
56
|
-
redirect_to
|
81
|
+
redirect_to :action => "index"
|
57
82
|
elsif params[:commit] == t('stepper.previous_step').html_safe and params[:action] == "update"
|
58
|
-
redirect_to
|
83
|
+
redirect_to :action => "new", :id => @_stepper_resource_instance.id
|
59
84
|
elsif params[:commit] == t('stepper.next_step').html_safe
|
60
|
-
redirect_to
|
85
|
+
redirect_to({:action => "new", :id => @_stepper_resource_instance.id}, :notice => "Step #{@_stepper_resource_instance.stepper_current_step.humanize} was successfully created.")
|
61
86
|
elsif params[:commit] == t('stepper.finish').html_safe
|
62
|
-
redirect_to
|
87
|
+
redirect_to :action => "show", :id => @_stepper_resource_instance.id
|
63
88
|
else
|
64
89
|
raise Stepper::StepperException.new("Unknown commit: #{params[:commit]}")
|
65
90
|
end
|
66
91
|
end
|
67
92
|
|
93
|
+
# removes from params resource name, commit and id
|
68
94
|
def sanitized_params
|
69
95
|
params.except(@_stepper_name, :commit, :id)
|
70
96
|
end
|
@@ -1,6 +1,14 @@
|
|
1
1
|
module Stepper
|
2
2
|
class ControllerResource
|
3
|
-
|
3
|
+
# Sets up before filter in +controller_class+ for +create+, +update+ and +new+ actions.
|
4
|
+
# First argument can be name of resource.
|
5
|
+
# For example we have +CompaniesController+ and want to load or build resource to +@my_company+ variable:
|
6
|
+
# add_before_filter CompanyController, :my_company
|
7
|
+
#
|
8
|
+
# First argument it isn't required:
|
9
|
+
# add_before_filter CompanyController
|
10
|
+
# In this case resource will be loaded or built into +@company+ variable
|
11
|
+
#
|
4
12
|
def self.add_before_filter(controller_class, *args)
|
5
13
|
resource_name = args.first
|
6
14
|
controller_class.send(:before_filter, :only => [:create, :update, :new]) do |controller|
|
@@ -1,6 +1,23 @@
|
|
1
1
|
module Stepper
|
2
2
|
module ActionViewAdditions
|
3
3
|
module InstanceMethods
|
4
|
+
# Render partial from app/views/stepper/_fields
|
5
|
+
# Adds buttons "Next", "Previous", "Save" and "Finish" to form and adds hidden field with current step name.
|
6
|
+
#
|
7
|
+
# Add to locales for changing step names:
|
8
|
+
# en:
|
9
|
+
# stepper:
|
10
|
+
# next_step: 'Next step'
|
11
|
+
# previous_step: 'Previous step'
|
12
|
+
# save: 'Finish later'
|
13
|
+
# finish: 'Finish'
|
14
|
+
#
|
15
|
+
# +next_step+ button validates, saves current step and renders next step of form;
|
16
|
+
# +previous_step+ saves current step and renders previous step of form;
|
17
|
+
# +save+ save current step and redirects to index page;
|
18
|
+
# +finish+ is showed only for last step instead of +next_step+ button and it validates, saves last step and redirects to show.
|
19
|
+
#
|
20
|
+
# If you want to have other partial for buttons than add partial to: +app/views/stepper/_fields.html.erb+
|
4
21
|
def stepper(form)
|
5
22
|
resource = self.instance_variable_get :@_stepper_resource_instance
|
6
23
|
current_step_column = resource.class._stepper_current_step_column
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stepper
|
2
|
+
|
3
|
+
# This module is automatically included into all models.
|
2
4
|
module ActiveRecordAdditions
|
3
5
|
|
4
6
|
def self.included(base)
|
@@ -7,11 +9,32 @@ module Stepper
|
|
7
9
|
end
|
8
10
|
|
9
11
|
module ClassMethods
|
12
|
+
# Sets up methods and define steps.
|
13
|
+
# For example, you have model +Company+ and you want to fill it fields in few steps description, kind and address:
|
14
|
+
# class Company < ActiveRecord::Base
|
15
|
+
# has_steps :steps => %w{ description kind address }
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# Model should have current step column, by default it name is +current_step+.
|
19
|
+
# It should be added by migration:
|
20
|
+
# add_column :companies, :current_step, :string
|
21
|
+
# add_index :companies, :current_step
|
22
|
+
#
|
23
|
+
# The column name can be set up with option +current_step_column+.
|
24
|
+
#
|
25
|
+
# Options:
|
26
|
+
# [:+steps+]
|
27
|
+
# It is required option. Define steps for multistep form.
|
28
|
+
#
|
29
|
+
# [:+current_step_column+]
|
30
|
+
# Define what field use for save current step of form. Default +current_step+
|
31
|
+
#
|
32
|
+
|
10
33
|
def has_steps(options = {})
|
11
34
|
#check options
|
12
35
|
raise Stepper::StepperException.new("Options for has_steps must be in a hash.") unless options.is_a? Hash
|
13
36
|
options.each do |key, value|
|
14
|
-
unless [:current_step_column, :steps].include? key
|
37
|
+
unless [:current_step_column, :steps, :inherit].include? key
|
15
38
|
raise Stepper::StepperException.new("Unknown option for has_steps: #{key.inspect} => #{value.inspect}.")
|
16
39
|
end
|
17
40
|
end
|
@@ -23,60 +46,82 @@ module Stepper
|
|
23
46
|
self._stepper_current_step_column = options[:current_step_column] || :current_step
|
24
47
|
|
25
48
|
class_attribute :_stepper_steps
|
26
|
-
self._stepper_steps= options[:steps]
|
27
49
|
|
50
|
+
self._stepper_steps = []
|
51
|
+
self._stepper_steps = self.try(:superclass).try(:_stepper_steps) if options[:inherit]
|
52
|
+
self._stepper_steps += options[:steps]
|
28
53
|
include InstanceMethods
|
29
54
|
end
|
30
55
|
end
|
31
56
|
|
32
57
|
module InstanceMethods
|
33
58
|
|
59
|
+
# returns name of current step column
|
34
60
|
def stepper_current_step_column
|
35
61
|
self.class._stepper_current_step_column
|
36
62
|
end
|
37
63
|
|
64
|
+
# returns defined steps array
|
38
65
|
def stepper_steps
|
39
66
|
self.class._stepper_steps
|
40
67
|
end
|
41
68
|
|
69
|
+
alias_method(:steps, :stepper_steps) unless self.respond_to? :steps
|
70
|
+
|
71
|
+
# returns index of current step in steps array
|
42
72
|
def stepper_current_step_index
|
43
73
|
stepper_steps.index(stepper_current_step)
|
44
74
|
end
|
45
75
|
|
46
|
-
|
47
|
-
|
76
|
+
# returns name of current step
|
48
77
|
def stepper_current_step
|
49
|
-
self.send(self.
|
78
|
+
self.send(self.stepper_current_step_column)
|
50
79
|
end
|
51
80
|
|
81
|
+
alias_method :current_step, :stepper_current_step unless self.respond_to? :current_step
|
82
|
+
|
83
|
+
# sets up name of current step
|
84
|
+
# TODO: reject names that doesn't exists in steps array
|
52
85
|
def stepper_current_step=(step)
|
53
|
-
self.send("#{self.
|
86
|
+
self.send("#{self.stepper_current_step_column}=", step)
|
54
87
|
end
|
55
88
|
|
89
|
+
alias_method :current_step=, :stepper_current_step= unless self.respond_to? :current_step=
|
90
|
+
|
91
|
+
# Use to check current step or given step is last step
|
92
|
+
# last_step?("address")
|
93
|
+
# TODO: reject names that doesn't exists in steps array
|
56
94
|
def last_step?(step = stepper_current_step)
|
57
95
|
step == self.stepper_steps.last
|
58
96
|
end
|
59
97
|
|
98
|
+
# Use to check current step or given step is first step
|
99
|
+
# first_step?("address")
|
100
|
+
# TODO: reject names that doesn't exists in steps array
|
60
101
|
def first_step?(step = stepper_current_step)
|
61
102
|
(step == stepper_steps.first) or stepper_current_step.blank? && step.blank?
|
62
103
|
end
|
63
104
|
|
105
|
+
# returns previous step of current step
|
64
106
|
def previous_step
|
65
107
|
return nil if (first_step? or stepper_current_step.blank?)
|
66
108
|
stepper_steps[stepper_steps.index(stepper_current_step) - 1]
|
67
109
|
end
|
68
110
|
|
111
|
+
# set previous step as current step
|
69
112
|
def previous_step!
|
70
113
|
self.stepper_current_step = self.previous_step
|
71
114
|
self
|
72
115
|
end
|
73
116
|
|
117
|
+
# returns next step of current step
|
74
118
|
def next_step
|
75
119
|
return stepper_steps.first if self.stepper_current_step.blank?
|
76
120
|
return nil if self.last_step?
|
77
121
|
stepper_steps[stepper_steps.index(stepper_current_step) + 1]
|
78
122
|
end
|
79
123
|
|
124
|
+
# set next step as current step
|
80
125
|
def next_step!
|
81
126
|
self.stepper_current_step = self.next_step
|
82
127
|
self
|
@@ -84,6 +129,24 @@ module Stepper
|
|
84
129
|
|
85
130
|
protected
|
86
131
|
|
132
|
+
# Executes validation methods for current step and all previous steps if its exists.
|
133
|
+
# You can set up what fields should be validated in methods for steps. For example:
|
134
|
+
#
|
135
|
+
# def validate_description
|
136
|
+
# self.validates_presence_of :name
|
137
|
+
# self.validates_presence_of :desc
|
138
|
+
# end
|
139
|
+
#
|
140
|
+
# def validate_address
|
141
|
+
# self.validates_presence_of :city
|
142
|
+
# self.validates_presence_of :country
|
143
|
+
# self.validates_presence_of :address
|
144
|
+
# end
|
145
|
+
#
|
146
|
+
# def validate_kind
|
147
|
+
# self.validates_presence_of :kind
|
148
|
+
# end
|
149
|
+
|
87
150
|
def current_step_validation
|
88
151
|
return if stepper_current_step.blank?
|
89
152
|
for i in 0..stepper_current_step_index do
|
data/stepper.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{stepper}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Anton Versal}]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-10-05}
|
13
13
|
s.description = %q{Stepper is multistep form (wizard) solution for Rails 3. Stepper allows you to split up your large form into series of pages that users can navigate through to complete the form and save it state.}
|
14
14
|
s.email = %q{ant.ver@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -44,6 +44,7 @@ Gem::Specification.new do |s|
|
|
44
44
|
"test/models/assigns_test.rb",
|
45
45
|
"test/models/instance_test.rb",
|
46
46
|
"test/models/models_test.rb",
|
47
|
+
"test/models/sti_test.rb",
|
47
48
|
"test/models/validation_test.rb",
|
48
49
|
"test/rails_app/Rakefile",
|
49
50
|
"test/rails_app/app/controllers/application_controller.rb",
|
@@ -51,6 +52,7 @@ Gem::Specification.new do |s|
|
|
51
52
|
"test/rails_app/app/helpers/application_helper.rb",
|
52
53
|
"test/rails_app/app/mailers/.gitkeep",
|
53
54
|
"test/rails_app/app/models/.gitkeep",
|
55
|
+
"test/rails_app/app/models/big_company.rb",
|
54
56
|
"test/rails_app/app/models/company.rb",
|
55
57
|
"test/rails_app/app/models/users.rb",
|
56
58
|
"test/rails_app/app/views/companies/_step1_step.html.erb",
|
@@ -14,7 +14,8 @@ class CompaniesControllerTest < ActionController::TestCase
|
|
14
14
|
|
15
15
|
test "should assign resource if params[:id] exists" do
|
16
16
|
@controller.expects(:render)
|
17
|
-
|
17
|
+
|
18
|
+
Company.expects(:find).with('1').returns(mock_company(:last_step? => false))
|
18
19
|
get :new, :id => 1
|
19
20
|
assert_response :success
|
20
21
|
assert_equal assigns(:company), mock_company
|
@@ -22,11 +23,18 @@ class CompaniesControllerTest < ActionController::TestCase
|
|
22
23
|
|
23
24
|
test "should get existing assigns" do
|
24
25
|
@controller.expects(:render)
|
25
|
-
@controller.instance_variable_set(:@company, mock_company)
|
26
|
+
@controller.instance_variable_set(:@company, mock_company(:last_step? => false))
|
26
27
|
get :new, :id => 1
|
27
28
|
assert_equal assigns(:company), mock_company
|
28
29
|
end
|
29
30
|
|
31
|
+
test "new action should redirect to show if company on at the last step" do
|
32
|
+
@controller.instance_variable_set(:@company, mock_company(:last_step? => true, :id => "1"))
|
33
|
+
get :new, :id => 1
|
34
|
+
assert_response :redirect
|
35
|
+
assert_redirected_to "http://test.host/companies/1"
|
36
|
+
end
|
37
|
+
|
30
38
|
protected
|
31
39
|
def mock_company(stubs={})
|
32
40
|
@mock_company ||= mock(stubs)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'helper'
|
2
|
+
class StiModelTest < ActiveSupport::TestCase
|
3
|
+
setup do
|
4
|
+
@big_company = BigCompany.new
|
5
|
+
end
|
6
|
+
|
7
|
+
test "should get steps from parent class" do
|
8
|
+
assert_equal @big_company.stepper_steps, ["step1", "step2", "step3", "step4", "step5", "step6"]
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stepper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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: 2011-
|
12
|
+
date: 2011-10-05 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70264337129840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70264337129840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby-debug19
|
27
|
-
requirement: &
|
27
|
+
requirement: &70264337129360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70264337129360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sqlite3
|
38
|
-
requirement: &
|
38
|
+
requirement: &70264337128880 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70264337128880
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: shoulda
|
49
|
-
requirement: &
|
49
|
+
requirement: &70264337128400 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70264337128400
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70264337127920 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.0.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70264337127920
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70264337127440 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.6.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70264337127440
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rcov
|
82
|
-
requirement: &
|
82
|
+
requirement: &70264337126940 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70264337126940
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: mocha
|
93
|
-
requirement: &
|
93
|
+
requirement: &70264337126460 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70264337126460
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: capybara
|
104
|
-
requirement: &
|
104
|
+
requirement: &70264337125980 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70264337125980
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: launchy
|
115
|
-
requirement: &
|
115
|
+
requirement: &70264337125500 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70264337125500
|
124
124
|
description: Stepper is multistep form (wizard) solution for Rails 3. Stepper allows
|
125
125
|
you to split up your large form into series of pages that users can navigate through
|
126
126
|
to complete the form and save it state.
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- test/models/assigns_test.rb
|
159
159
|
- test/models/instance_test.rb
|
160
160
|
- test/models/models_test.rb
|
161
|
+
- test/models/sti_test.rb
|
161
162
|
- test/models/validation_test.rb
|
162
163
|
- test/rails_app/Rakefile
|
163
164
|
- test/rails_app/app/controllers/application_controller.rb
|
@@ -165,6 +166,7 @@ files:
|
|
165
166
|
- test/rails_app/app/helpers/application_helper.rb
|
166
167
|
- test/rails_app/app/mailers/.gitkeep
|
167
168
|
- test/rails_app/app/models/.gitkeep
|
169
|
+
- test/rails_app/app/models/big_company.rb
|
168
170
|
- test/rails_app/app/models/company.rb
|
169
171
|
- test/rails_app/app/models/users.rb
|
170
172
|
- test/rails_app/app/views/companies/_step1_step.html.erb
|
@@ -216,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
218
|
version: '0'
|
217
219
|
segments:
|
218
220
|
- 0
|
219
|
-
hash:
|
221
|
+
hash: -2262266912899899848
|
220
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
223
|
none: false
|
222
224
|
requirements:
|