-
hmvc-rails is the high-level model of MVC (MVC high-level structure)
-
hmvc-rails makes it easy to manage source code and develop projects
- Generate controller file
- Generate operations file
- Generate forms file
- Generate views file
- Add file creator and creation date
Add this line to your application's Gemfile
group :development do gem 'hmvc-rails' endThen execute
bundle install And run
rails g hmvc_rails:install create config/initializers/hmvc.rb create app/operations/application_operation.rb create app/forms/application_form.rb create app/validators/uniqueness_validator.rb create app/validators/email_validator.rb If it's an API project then you can run
rails g hmvc_rails:install --api create config/initializers/hmvc_rails.rb create app/operations/application_operation.rb create app/forms/application_form.rb create app/validators/uniqueness_validator.rb create app/validators/email_validator.rb create lib/hmvc_rails/extras/exception.rb create lib/hmvc_rails/extras/error_resource.rb create lib/hmvc_rails/extras/error_response.rb insert config/application.rb insert app/controllers/application_controller.rb rails g hmvc_rails controller_name hmvc controller_name Example
rails g hmvc_rails admin --- OR hmvc admin create app/controllers/admin_controller.rb create app/operations/admin/index_operation.rb create app/operations/admin/show_operation.rb create app/operations/admin/new_operation.rb create app/operations/admin/create_operation.rb create app/operations/admin/edit_operation.rb create app/operations/admin/update_operation.rb create app/operations/admin/destroy_operation.rb create app/forms/admin/new_form.rb create app/forms/admin/create_form.rb create app/forms/admin/edit_form.rb create app/forms/admin/update_form.rb create app/views/admin/index.html.erb create app/views/admin/show.html.erb create app/views/admin/new.html.erb create app/views/admin/edit.html.erb rails g hmvc_rails admin --action index show list detail selection rails g hmvc_rails admin --action index show list detail selection --form index show list 3. If you want to create with parent controller other than default. You can use option --parent-controller
rails g hmvc_rails admin --parent-controller PersonController rails g hmvc_rails admin --skip-form Or change configuration config.form = %w[]
rails g hmvc_rails admin --skip-view Or change configuration config.view = %w[]
If you want to change the default value when creating the file, please uncomment and update
config/initializers/hmvc.rb
# frozen_string_literal: true # Created at: 2023-02-18 22:30 +0700 # Creator: thuc.phan@tomosia.com if Rails.env.development? Hmvc::Rails.configure do |config| # The controller files's parent class of controller. Default is ApplicationController # config.parent_controller = "ApplicationController" # Method when creating the controller files. Default is %w[index show new create edit update destroy] # config.action = %w[index show new create edit update destroy] # Method when creating the view files. Default is %w[index show new edit] # config.view = %w[index show new edit] # The form files's parent class. Default is ApplicationForm # config.parent_form = "ApplicationForm" # Method when creating the form files. Default is %w[new create edit update] # config.form = %w[new create edit update] # The operation files's parent class. Default is ApplicationOperation # config.parent_operation = "ApplicationOperation" # Save author name and timestamp to file. Default is true # config.file_traces = true end endIf you want to rollback the hmvc-rails generator. You can run command
rails d hmvc_rails controller_name - Add gem and run
bundle(link to gem hmvc-rails project)
group :development do gem 'hmvc-rails', path: '../../Projects/hmvc-rails' gem 'pry' end- Add
binding.pryto the line you want to test
require 'pry' ... def create_controller binding.pry template "controller.rb", File.join("app/controllers", class_path.join("/"), "#{file_name}_controller.rb") end- Run command generator at Rails project terminal
rails g hmvc_rails admin 37: def create_controller => 38: binding.pry 39: template "controllers/controller.rb", 40: File.join("app/controllers", class_path.join("/"), "#{file_name}_controller.rb") 41: end [1] pry(#<HmvcRailsGenerator>)> options[:action] => ["index", "show", "new", "create", "edit", "update", "destroy"] [2] pry(#<HmvcRailsGenerator>)> - Code convention check
➜ hmvc-rails git:(main) rubocop Inspecting 14 files .............. 14 files inspected, no offenses detected - Run unit test
➜ hmvc-rails git:(main) ✗ rake test Run options: --seed 9122 # Running: ............. Finished in 0.721364s, 18.0214 runs/s, 166.3515 assertions/s. 13 runs, 120 assertions, 0 failures, 0 errors, 0 skips If your project used rubocop for code convention. You can add the below configuration for some conventional hmvc-rails
.rubocop.yml
require: rubocop/cop/hmvc_rails_cops HmvcRails/OperatingStyle: Enabled: true Include: - app/operations/**/*.rb HmvcRails/FormalStyle: Enabled: true Include: - app/forms/**/*.rbExample hmvc-rails offenses
➜ demo git:(master) ✗ rubocop Inspecting 48 files ......C......C.................................. Offenses: app/forms/admin/new_form.rb:6:1: C: HmvcRails/FormalStyle: The form filename does not match the desired format class Admin::NewFormm < ApplicationForm ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/operations/admin/new_operation.rb:6:1: C: HmvcRails/OperatingStyle: The operation filename does not match the desired format class Admin::NewOperationn < ApplicationOperation ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/operations/admin/new_operation.rb:7:3: C: HmvcRails/OperatingStyle: Method works in "call" without prefix "step_" def call ... ^^^^^^^^ 48 files inspected, 3 offenses detected The gem hmvc-rails is copyright TOMOSIA VIET NAM CO., LTD
- Thuc Phan T. thuc.phan@tomosia.com
- Minh Tang Q. minh.tang@tomosia.com
A company that creates new value together with customers and lights the light of happiness
【一緒に】【ハッピー】【ライトアップ】
お客様と共に新たな価値を生み出し幸せの明かりを灯す会社、トモシア