Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
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 architectural pattern in Rails.
This RailsConf 2014 talk video explains it all: https://www.youtube.com/watch?v=muyfoiKHMMA
To learn more about the Ultra Light Wizard architectural pattern philosophy and function, please read this Code Painter blog post: [Ultra Light & Maintainable Wizard in Rails] (http://www.codepainter.ca/2013/10/ultra-light-maintainable-wizards-in.html)
Note: Since Ultra Light Wizard is an architectural pattern that can be applied whether using this library or not, it is more important to understand it well first through watching the video and reading the article provided above. Afterward, you may use the library to get started quickly via Rails scaffolding for new project models or otherwise avoid by applying pattern manually for existing project models.
Add the following to your Rails project Gemfile
:
gem 'ultra_light_wizard', '~> 0.1.4'
Run the command:
bundle
Then, use the following command in place of the Rails scaffold generator, and it will scaffold both standard resource components and wizard-related components:
rails generate ultra_light_wizard:scaffold (resource) steps:(step1),(step2),(step3),... attributes:(attribute1:db_type1),(attribute2:db_type2),...
This will generate wizard step routes, controller, models, and views
Example:
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
Output:
generate scaffold
invoke active_record
create db/migrate/20160201025849_create_projects.rb
create app/models/project.rb
invoke test_unit
create test/models/project_test.rb
create test/fixtures/projects.yml
invoke resource_route
route resources :projects
invoke scaffold_controller
create app/controllers/projects_controller.rb
invoke erb
create app/views/projects
create app/views/projects/index.html.erb
create app/views/projects/edit.html.erb
create app/views/projects/show.html.erb
create app/views/projects/new.html.erb
create app/views/projects/_form.html.erb
invoke test_unit
create test/controllers/projects_controller_test.rb
invoke helper
create app/helpers/projects_helper.rb
invoke test_unit
invoke jbuilder
create app/views/projects/index.json.jbuilder
create app/views/projects/show.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/projects.coffee
invoke scss
create app/assets/stylesheets/projects.scss
invoke scss
identical app/assets/stylesheets/scaffolds.scss
gsub app/controllers/projects_controller.rb
gsub app/controllers/projects_controller.rb
insert app/controllers/projects_controller.rb
gsub app/views/projects/index.html.erb
create app/controllers/project_steps_controller.rb
create app/helpers/project_steps_helper.rb
create app/views/project_steps/_step_navigation.html.erb
create app/models/project/name.rb
create app/views/project_steps/name.html.erb
create app/models/project/description.rb
create app/views/project_steps/description.html.erb
create app/models/project/start_date.rb
create app/views/project_steps/start_date.html.erb
create app/models/project/delivery_date.rb
create app/views/project_steps/delivery_date.html.erb
create app/models/project/preview.rb
create app/views/project_steps/preview.html.erb
route resources :projects, only: [:create, :show] do
resources :project_steps, only: [:edit, :update]
end
Once the files are generated, you can proceed to place your own code customizations in the wizard step models and views.
To kick-off wizard, simply trigger the main model controller create action, and it will transition to the wizard step first step edit action.
For example, the following will kick-off the project wizard by creating a project and automatically redirecting to first step:
<%= link_to 'New Project', projects_path, method: :post %>
If you'd like to customize the term "step", you can add a step_alias:(alias) option as in the following:
Example:
rails generate ultra_light_wizard:scaffold Project step_alias:part steps:basic_info,project_detail,file_uploads,preview attributes:name:string,description:text,start_date:date,delivery_date:date
Output:
generate scaffold
invoke active_record
create db/migrate/20160201025849_create_projects.rb
create app/models/project.rb
invoke test_unit
create test/models/project_test.rb
create test/fixtures/projects.yml
invoke resource_route
route resources :projects
invoke scaffold_controller
create app/controllers/projects_controller.rb
invoke erb
create app/views/projects
create app/views/projects/index.html.erb
create app/views/projects/edit.html.erb
create app/views/projects/show.html.erb
create app/views/projects/new.html.erb
create app/views/projects/_form.html.erb
invoke test_unit
create test/controllers/projects_controller_test.rb
invoke helper
create app/helpers/projects_helper.rb
invoke test_unit
invoke jbuilder
create app/views/projects/index.json.jbuilder
create app/views/projects/show.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/projects.coffee
invoke scss
create app/assets/stylesheets/projects.scss
invoke scss
identical app/assets/stylesheets/scaffolds.scss
gsub app/controllers/projects_controller.rb
gsub app/controllers/projects_controller.rb
insert app/controllers/projects_controller.rb
gsub app/views/projects/index.html.erb
create app/controllers/project_parts_controller.rb
create app/helpers/project_parts_helper.rb
create app/views/project_parts/_part_navigation.html.erb
create app/models/project/name.rb
create app/views/project_parts/name.html.erb
create app/models/project/description.rb
create app/views/project_parts/description.html.erb
create app/models/project/start_date.rb
create app/views/project_parts/start_date.html.erb
create app/models/project/delivery_date.rb
create app/views/project_parts/delivery_date.html.erb
create app/models/project/preview.rb
create app/views/project_parts/preview.html.erb
route resources :projects, only: [:create, :show] do
resources :project_parts, only: [:edit, :update]
end
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.
v0.1.4 Step breadcrumb, having easily customizable semantic markup v0.1.3 test coverage with feature specs / fixed issue 4 Generate routes in the right order v0.1.2 ensure resource creation redirects to first step / include step helper in resource controller v0.1.1 includes permitted params and edit/update actions v0.1.0 initial implementation
MIT
FAQs
Unknown package
We found that ultra_light_wizard demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.