class MobileWorkflow::Generators::InstallGenerator
Public Instance Methods
create_api_controller()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 19 def create_api_controller template("api_controller.rb.erb", "app/controllers/api_controller.rb") end
generate_controllers_and_routes()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 70 def generate_controllers_and_routes say "Generating controllers" controller_name_to_actions = open_api_spec.controller_name_to_actions route "root to: 'admin/#{controller_name_to_actions.keys.first}#index'" controller_name_to_actions.each_pair do |plural_controller_name, actions| controller_name = plural_controller_name.singularize model_properties = model_name_to_properties[controller_name] unless model_properties # Generate a model because it probably wasnt present in the schema # And set default attributes model_properties = "text:string" generate_model(controller_name, model_properties) end generate "mobile_workflow:controller #{controller_name} --actions #{actions.join(" ")} --attributes #{model_properties} #{generate_controller_args}".strip route "resources :#{plural_controller_name}, only: [#{actions.map{|a| ":#{a}"}.join(", ")}]" end end
generate_doorkeeper()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 27 def generate_doorkeeper return unless options[:doorkeeper_oauth] say "Generating Doorkeeper OAuth" migration_template "create_users.rb", "db/migrate/create_users.rb" generate 'doorkeeper:install' gsub_file 'config/initializers/doorkeeper.rb', 'raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"', 'User.find_by_id(session.delete(:user_id)) || redirect_to(new_session_url(return_to: request.fullpath))' generate 'doorkeeper:migration' generate 'doorkeeper:pkce' template("user.rb.erb", "app/models/user.rb") template("sessions_controller.rb.erb", "app/controllers/sessions_controller.rb") route "resources :sessions, only: [:new, :create]" # View related for login screen copy_file("app/views/layouts/application.html.erb") copy_file("app/views/sessions/new.html.erb") copy_file("app/helpers/application_helper.rb") copy_file("spec/factories/users.rb") end
generate_models()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 48 def generate_models say "Loading OpenAPI Spec: #{open_api_spec_path}" say "Generating models" copy_file("app/models/application_record.rb") model_name_to_properties.each_pair do |model_name, model_properties| if doorkeeper_oauth? model_properties = "#{model_properties} user:references" @model_name_to_properties[model_name] = model_properties end if interactive? && !yes?("Use generated schema #{model_name}(#{model_properties})[yn]?") model_properties = ask "Specify schema for #{model_name}: (e.g. text:string image:attachment region:reference)" @model_name_to_properties[model_name] = model_properties end generate_model(model_name, model_properties) end end
generate_seeds()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 91 def generate_seeds template("seeds.rb.erb", "db/seeds.rb", force: true) end
mount_engine()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 23 def mount_engine route "mount MobileWorkflow::Engine => '/'" end
Private Instance Methods
doorkeeper_oauth?()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 116 def doorkeeper_oauth? options[:doorkeeper_oauth] end
generate_controller_args()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 101 def generate_controller_args args = '' args += ' --s3-storage' if s3_storage? args += ' --doorkeeper-oauth' if doorkeeper_oauth? args.strip end
generate_model(model_name, model_properties)
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 97 def generate_model(model_name, model_properties) generate("mobile_workflow:model #{model_name} #{model_properties}") end
interactive?()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 128 def interactive? options[:interactive] end
model_name_to_properties()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 108 def model_name_to_properties @model_name_to_properties ||= open_api_spec.model_name_to_properties end
open_api_spec()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 112 def open_api_spec @open_api_spec ||= ::MobileWorkflow::OpenApiSpec::Parser.new(File.read(open_api_spec_path)) end
open_api_spec_path()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 124 def open_api_spec_path options[:open_api_spec_path] end
s3_storage?()
click to toggle source
# File lib/generators/mobile_workflow/install/install_generator.rb, line 120 def s3_storage? options[:s3_storage] end