class Kriangle::Generators::InstallGenerator
Custom scaffolding generator
Public Class Methods
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/generators/kriangle/install_generator.rb, line 50 def initialize(*args, &block) super @model_attributes = [] @model_associations = [] @underscored_user_class = user_class.underscore @wrapper = options.wrapper @database = options.database @custom_orm = 'ActiveRecord' # Kriangle.custom_orm @skip_tips = options.skip_tips? @skip_swagger = options.skip_swagger? @skip_avatar = options.skip_avatar? @skip_migration = options.skip_migration? @skip_authentication = false @controller_path = options.controller_path&.classify&.pluralize || user_class.classify&.pluralize args_for_c_m.each do |arg| next unless arg.include?(':') options = arg.split(':') if arg.match(/^ma:/).present? options.shift @model_associations << Association.new(*options) else @model_attributes << Attribute.new(*options) end end if @model_attributes.blank? default_attributes = ['first_name:string', 'last_name:string', 'about:text', 'age:integer', 'dob:datetime', 'gender:string'] @model_attributes = default_attributes.map { |arg| Attribute.new(*arg.split(':')) } end @model_attributes.uniq!(&:name) @attributes = %i[id email] @attributes += @model_attributes.map { |a| a.name.to_sym } @attributes.uniq! end
next_migration_number(_path)
click to toggle source
# File lib/generators/kriangle/install_generator.rb, line 88 def self.next_migration_number(_path) if @prev_migration_nr @prev_migration_nr += 1 else @prev_migration_nr = Time.now.utc.strftime('%Y%m%d%H%M%S').to_i end @prev_migration_nr.to_s end
Public Instance Methods
copy_controller_and_spec_files()
click to toggle source
# File lib/generators/kriangle/install_generator.rb, line 125 def copy_controller_and_spec_files # Main base files create_template 'base.rb', 'app/controllers/api/base.rb', skip_if_exist: true inject_into_file 'app/controllers/api/base.rb', "\n\t\t\tmount Api::#{wrapper.capitalize}::Controllers", after: /Grape::API.*/ # All new controllers will go here create_template 'controllers.rb', "app/controllers/api/#{@wrapper.underscore}/controllers.rb", skip_if_exist: true inject_into_file "app/controllers/api/#{@wrapper.underscore}/controllers.rb", "\n\t\t\tmount Api::#{@wrapper.capitalize}::#{controller_path}", after: /Grape::API.*/ # Authentications related things will go there create_template 'defaults.rb', "app/controllers/api/#{@wrapper.underscore}/defaults.rb", skip_if_exist: true create_template 'custom_description.rb', 'app/controllers/api/custom_description.rb' create_template 'authenticator.rb', 'app/controllers/api/authenticator.rb' create_template 'responder.rb', 'app/controllers/api/responder.rb' # Authentication i.e. login, register, logout template 'auth.rb', "app/controllers/api/#{@wrapper.underscore}/#{controller_path.underscore}.rb" # setup routes inject_into_file 'config/routes.rb', "\n\tmount GrapeSwaggerRails::Engine => '/swagger'", after: /routes.draw.*/ unless skip_swagger inject_into_file 'config/routes.rb', "\n\tmount Api::Base, at: '/'", after: /routes.draw.*/ end
copy_initializer()
click to toggle source
# File lib/generators/kriangle/install_generator.rb, line 97 def copy_initializer create_template 'kriangle.rb', 'config/initializers/kriangle.rb', skip_if_exist: true create_template 'application_record.rb', 'app/models/application_record.rb', skip_if_exist: true create_template 'swagger.rb', 'config/initializers/swagger.rb', skip_if_exist: true unless skip_swagger end
copy_migrations()
click to toggle source
# File lib/generators/kriangle/install_generator.rb, line 103 def copy_migrations if custom_orm == 'ActiveRecord' && !skip_migration create_migration_file 'create_users.rb.erb', "db/migrate/create_#{user_class.pluralize.underscore}.rb" create_migration_file 'create_authentications.rb', 'db/migrate/create_authentications.rb' create_migration_file 'create_avatars.rb', 'db/migrate/create_avatars.rb' unless skip_avatar end end
create_model_file()
click to toggle source
# File lib/generators/kriangle/install_generator.rb, line 111 def create_model_file create_template 'user.rb', "app/models/#{user_class.underscore}.rb" create_template 'authentication.rb', 'app/models/authentication.rb' create_template 'avatar.rb', 'app/models/avatar.rb' unless skip_avatar create_template 'active_serializer.rb', 'app/serializers/active_serializer.rb', skip_if_exist: true create_template 'serializer.rb', "app/serializers/#{underscored_user_class}_serializer.rb", class_name: user_class, attributes: @attributes create_template 'serializer.rb', 'app/serializers/avatar_serializer.rb', class_name: 'Avatar', attributes: %i[id image_url] unless skip_avatar # Uploader File create_template 'avatar_uploader.rb', 'app/uploaders/avatar_uploader.rb' unless skip_avatar end