ultra_light_wizard 0.0.6 → 0.1.0

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
2
  SHA1:
3
- metadata.gz: c477bed626ccfefdabaa81d8537e8e045db42feb
4
- data.tar.gz: b5e197995d61a13d57ac1ca1fc932894212cdb4a
3
+ metadata.gz: c8aa77dc46a2504759cd6e587b87259a3c939541
4
+ data.tar.gz: db43b213bf6684703c6e5e05a4b2bd51709a7585
5
5
  SHA512:
6
- metadata.gz: c4c0c47bbe0ebd1b983a6eab5c1e5635aa65a8ae4b2600638f0475a9f956e82c12a29fadacd5a3fb7604f197a252fc12c710fb35049e3e4899f7a4d7cc65da26
7
- data.tar.gz: 785dfb392fcca6b2bb73115a2133a9b1cc3afc429ad0d2a38f7c61955b26c683088fe696d3f5222a5a6ba34e8276ee04e291056b52e31da2351b8a7dbeeef663
6
+ metadata.gz: 1f97a1b85a1532534b8cf9e05027cb4724d1261ebd107dc36d8c198f4397ce8e9e78f408e315a988b24a3491fec19c40d74b2f8bb8cde3026449195ebaca3351
7
+ data.tar.gz: a12fdbf28e420f159677fa1604b5c2627863faed215c6069a2812d2c583ab9183964e9d8d84002d3d6d8192b0ba2c3b79ddc1dd6ab817d00e8fbfc600fdc462e
File without changes
File without changes
data/Gemfile CHANGED
File without changes
File without changes
File without changes
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
- Ultra Light Wizard
2
- ==================
1
+ Ultra Light Wizard v0.1.0 (beta)
2
+ ================================
3
3
 
4
4
  No time to manage a wizard state machine, session variables, or complicated controllers? Use Ultra Light Wizard!! A RESTful session-less validation-friendly simple wizard approach in Rails.
5
5
 
@@ -8,18 +8,32 @@ No time to manage a wizard state machine, session variables, or complicated cont
8
8
  This RailsConf 2014 talk video explains it all:
9
9
  https://www.youtube.com/watch?v=muyfoiKHMMA
10
10
 
11
+ Principles
12
+ ==========
13
+
14
+ - REST: wizard steps are represented as REST nested resources under the model resource being built
15
+ - MVC: respects MVC separation of concerns
16
+ - OO: honors OO principles of low coupling and high cohesion
17
+ - Design Patterns: wizard is simply a model Builder
18
+ - DDD: supports domain concepts directly with customizable vocabulary
19
+ - Non-Functional Requirements:
20
+ - Productivity: minimum effort for adding wizards and wizard steps
21
+ - Maintainability: minimum code to maintain while adhering to other principles
22
+ - Performance: stateless design means scalability
23
+ - Security: stateless design is compatible with Rails security measures
24
+
11
25
  Instructions
12
26
  ============
13
27
 
14
28
  Simply use the following command in place of the Rails scaffold generator, and it will scaffold both standard resource and wizard components
15
29
 
16
- ```rails generate ultra_light_wizard:wizard (resource) steps:(step1),(step2),(step3),... attributes:(attribute1:db_type1),(attribute2:db_type2),...```
30
+ ```rails generate ultra_light_wizard:scaffold (resource) steps:(step1),(step2),(step3),... attributes:(attribute1:db_type1),(attribute2:db_type2),...```
17
31
 
18
32
  This will generate wizard step routes, controller, models, and views
19
33
 
20
34
  Example:
21
35
 
22
- ```rails generate ultra_light_wizard:wizard Project steps:basic_info,project_detail,file_uploads,preview attributes:name:string,description:text,start_date:date,delivery_date:date```
36
+ ```rails generate ultra_light_wizard:scaffold Project steps:basic_info,project_detail,file_uploads,preview attributes:name:string,description:text,start_date:date,delivery_date:date```
23
37
 
24
38
  Output:
25
39
 
@@ -58,7 +72,7 @@ generate scaffold
58
72
  invoke scss
59
73
  identical app/assets/stylesheets/scaffolds.scss
60
74
  conflict app/controllers/projects_controller.rb
61
- Overwrite /cygdrive/c/Users/a_mal_000/OneDrive/code/rails_example/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] a
75
+ Overwrite ~/code/rails_example/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] a
62
76
  force app/controllers/projects_controller.rb
63
77
  create app/controllers/project_steps_controller.rb
64
78
  create app/helpers/project_steps_helper.rb
@@ -78,13 +92,21 @@ resources :project_steps, only: [:edit, :update]
78
92
  end
79
93
  ```
80
94
 
95
+ Once the files are generated, you can proceed to place your own code customizations in the wizard step models and views.
96
+
97
+ To kick-off wizard, simply trigger the main model controller create action, and it will transition to the wizard step first step edit action.
98
+
99
+ For example, the following will kick-off the project wizard by creating a project and automatically redirecting to first step:
100
+
101
+ ```<%= link_to 'New Project', projects_path, method: :post %>```
102
+
81
103
  It will ask you at one point to overwrite projects_controller generated in included scaffold. Type y or a to have it continue.
82
104
 
83
105
  If you'd like to customize the term "step", you can add a step_alias:(alias) option as in the following:
84
106
 
85
107
  Example:
86
108
 
87
- ```rails generate ultra_light_wizard:wizard Project steps:basic_info,project_detail,file_uploads,preview attributes:name:string,description:text,start_date:date,delivery_date:date step_alias:part```
109
+ ```rails generate ultra_light_wizard:scaffold Project steps:basic_info,project_detail,file_uploads,preview attributes:name:string,description:text,start_date:date,delivery_date:date step_alias:part```
88
110
 
89
111
  Output:
90
112
 
@@ -123,7 +145,7 @@ generate scaffold
123
145
  invoke scss
124
146
  identical app/assets/stylesheets/scaffolds.scss
125
147
  conflict app/controllers/projects_controller.rb
126
- Overwrite /cygdrive/c/Users/a_mal_000/OneDrive/code/rails_example/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] a
148
+ Overwrite ~/code/rails_example/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] a
127
149
  force app/controllers/projects_controller.rb
128
150
  create app/controllers/project_parts_controller.rb
129
151
  create app/helpers/project_parts_helper.rb
@@ -143,50 +165,33 @@ resources :project_parts, only: [:edit, :update]
143
165
  end
144
166
  ```
145
167
 
146
- Once the files are generated, you can proceed to place your own code customizations in the wizard step models and views.
147
-
148
- To kick-off wizard, simply trigger the main model controller create action, and it will transition to the wizard step first step edit action.
149
-
150
- For example, the following will kick-off the project wizard by creating a project and automatically redirecting to first step:
151
-
152
- ```<%= link_to 'New Project', projects_path, method: :post %>```
153
-
154
168
  To learn more about the Ultra Light Wizard philosophy and function, please read this [Code Painter](http://www.codepainter.ca) blog post: [Ultra Light & Maintainable Wizard in Rails] (http://www.codepainter.ca/2013/10/ultra-light-maintainable-wizards-in.html)
155
169
 
156
- Principles
157
- ==========
158
-
159
- - REST: wizard steps are represented as REST nested resources under the model resource being built
160
- - MVC: respects MVC separation of concerns
161
- - OO: honors OO principles of low coupling and high cohesion
162
- - Design Patterns: wizard is simply a model Builder
163
- - DDD: supports domain concepts directly with customizable vocabulary
164
- - Non-Functional Requirements:
165
- - Productivity: minimum effort for adding wizards and wizard steps
166
- - Maintainability: minimum code to maintain while adhering to other principles
167
- - Performance: stateless design means scalability
168
- - Security: stateless design is compatible with Rails security measures
169
-
170
170
  Features
171
171
  ========
172
172
 
173
- - Wizard step generator (model part builder MVC components)
173
+ - Ultra Light Wizard scaffold generator
174
+ + [DONE] Scaffolding of main model controller/views/migration
174
175
  + [DONE] Routes
175
176
  + [DONE] Controller steps
176
177
  + [DONE] Model parts
177
178
  + [DONE] View parts
178
179
  + [DONE] View navigation
179
- + [DONE] Helper (or Controller SuperModule trait) for ultra light wizard support
180
+ + [DONE] Helper for ultra light wizard support
180
181
  + [DONE] Route helper methods
181
182
  + [DONE] Wizard kick-off helper/view
182
183
  + [DONE] Forms
183
- - Form fields
184
- + [DONE] Scaffolding of main model controller/views/migration
185
184
  + [DONE] Support for attributes
185
+ + [DONE] Form fields
186
+ + [DONE] Custom name conventions
187
+ - Write automated tests
186
188
  - Support for nested resources
187
189
  - Modularize (perhaps extracting sub-generators)
188
- + [DONE] Customize name conventions
189
- - Write automated tests
190
+
191
+ Enhancements
192
+ ============
193
+
194
+ If you are interested in having enhancements implemented, please report via a GitHub issue, describing the problem, providing use case examples, and suggesting solutions to implement. I'd be happy to implement as part of paid work if needed ASAP using the [CodeMentor platform](https://www.codementor.io/andymaleh).
190
195
 
191
196
  License
192
197
  =======
data/Rakefile CHANGED
File without changes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.1.0
@@ -1,6 +1,7 @@
1
1
  <h1><%= file_path.humanize %> wizard</h1>
2
2
  <h2><%= step_alias.titleize %>: <%= @wizard_step.humanize %></h2>
3
3
  <%%= form_for <%= file_path %>_<%= step_alias %>_model, :url => current_<%= step_alias %>_path, :as => :<%= file_path %> do |f| %>
4
- <%%# Please insert the fields of this particular step %>
4
+ <%%# TODO limit to fields of this particular step %>
5
+ <%= form_content(true) %>
5
6
  <%%= render '<%= step_alias %>_navigation', f: f %>
6
7
  <%% end %>
@@ -1,6 +1,6 @@
1
1
  module UltraLightWizard
2
2
  module Generators
3
- class WizardGenerator < Rails::Generators::NamedBase
3
+ class ScaffoldGenerator < Rails::Generators::NamedBase
4
4
  source_root File.expand_path("../../templates", __FILE__)
5
5
  def arguments
6
6
  args.inject({}) do |output, arg|
@@ -43,7 +43,7 @@ module UltraLightWizard
43
43
  end
44
44
 
45
45
  def scaffold_attributes
46
- model_attributes.sub(',', ' ')
46
+ model_attributes.gsub(',', ' ')
47
47
  end
48
48
 
49
49
  def controller_attribute_names
@@ -58,9 +58,28 @@ module UltraLightWizard
58
58
  file_path.pluralize
59
59
  end
60
60
 
61
+ def arg_options
62
+ options.select {|key, value| value}.map {|key, value| "--#{key}"}.join(' ')
63
+ end
64
+
65
+ def form_content(execute=false)
66
+ if execute #prevents thor from executing too early
67
+ @form_content ||= lambda {
68
+ # TODO support formats other than html.erb like html.haml (autodetect)
69
+ scaffold_form_lines = File.new(Rails.root.join('app', 'views', plural_table_name, '_form.html.erb')).readlines
70
+ form_start_index = scaffold_form_lines.find_index {|line| line.include?('form')}
71
+ form_end_index = scaffold_form_lines.length - 1 - scaffold_form_lines.reverse.find_index {|line| line.include?('actions')}
72
+ form_content_start_index = form_start_index + 1
73
+ form_content_end_index = form_end_index - 1
74
+ extracted_form_lines = scaffold_form_lines[form_content_start_index..form_content_end_index]
75
+ extracted_form_lines.join
76
+ }.()
77
+ end
78
+ end
79
+
61
80
  desc "Creates a configuration file for a specific application context (e.g. admin). Takes context path as argument (e.g. admin or internal/wiki) to create config/features/[context_path].yml"
62
81
  def copy_config
63
- generate "scaffold", "#{file_path} #{scaffold_attributes}"
82
+ generate "scaffold", "#{file_path} #{scaffold_attributes} #{arg_options}"
64
83
  template "app/controllers/model_controller.rb.erb", "app/controllers/#{file_path.pluralize}_controller.rb"
65
84
  template "app/controllers/wizard_steps_controller.rb.erb", "app/controllers/#{file_path}_#{step_alias.pluralize}_controller.rb"
66
85
  template "app/helpers/wizard_steps_helper.rb.erb", "app/helpers/#{file_path}_#{step_alias.pluralize}_helper.rb"
File without changes
File without changes
File without changes
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: ultra_light_wizard 0.0.6 ruby lib
5
+ # stub: ultra_light_wizard 0.1.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "ultra_light_wizard"
9
- s.version = "0.0.6"
9
+ s.version = "0.1.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Andy Maleh"]
14
- s.date = "2016-02-01"
14
+ s.date = "2016-02-14"
15
15
  s.description = "Ultra light & maintainble wizards in Rails that honor REST, MVC, and OO with minimal writing of code involved and maximum flexibility"
16
16
  s.email = "andy.am@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/generators/templates/app/models/wizard_step_model.rb.erb",
34
34
  "lib/generators/templates/app/views/wizard_step_navigation_view.html.erb",
35
35
  "lib/generators/templates/app/views/wizard_step_view.html.erb",
36
- "lib/generators/ultra_light_wizard/wizard_generator.rb",
36
+ "lib/generators/ultra_light_wizard/scaffold_generator.rb",
37
37
  "lib/ultra_light_wizard.rb",
38
38
  "ruby187.Gemfile",
39
39
  "spec/spec_helper.rb",
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  ]
44
44
  s.homepage = "http://github.com/AndyObtiva/ultra_light_wizard"
45
45
  s.licenses = ["MIT"]
46
- s.rubygems_version = "2.4.6"
46
+ s.rubygems_version = "2.4.5.1"
47
47
  s.summary = "Ultra Light & Maintainable Wizards In Rails"
48
48
 
49
49
  if s.respond_to? :specification_version then
File without changes
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ultra_light_wizard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-01 00:00:00.000000000 Z
11
+ date: 2016-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeweler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.8.8
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.8.8
27
27
  description: Ultra light & maintainble wizards in Rails that honor REST, MVC, and
@@ -33,8 +33,8 @@ extra_rdoc_files:
33
33
  - LICENSE.txt
34
34
  - README.md
35
35
  files:
36
- - .ruby-gemset
37
- - .ruby-version
36
+ - ".ruby-gemset"
37
+ - ".ruby-version"
38
38
  - Gemfile
39
39
  - Gemfile.lock
40
40
  - LICENSE.txt
@@ -47,7 +47,7 @@ files:
47
47
  - lib/generators/templates/app/models/wizard_step_model.rb.erb
48
48
  - lib/generators/templates/app/views/wizard_step_navigation_view.html.erb
49
49
  - lib/generators/templates/app/views/wizard_step_view.html.erb
50
- - lib/generators/ultra_light_wizard/wizard_generator.rb
50
+ - lib/generators/ultra_light_wizard/scaffold_generator.rb
51
51
  - lib/ultra_light_wizard.rb
52
52
  - ruby187.Gemfile
53
53
  - spec/spec_helper.rb
@@ -64,17 +64,17 @@ require_paths:
64
64
  - lib
65
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
76
  rubyforge_project:
77
- rubygems_version: 2.4.6
77
+ rubygems_version: 2.4.5.1
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Ultra Light & Maintainable Wizards In Rails