Sha256: d97ad7c1cd53b4d474b7d4846b7f2de31bee24eaf57ed01f5c89674ea184860f

Contents?: true

Size: 1.34 KB

Versions: 10

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module PraxisGen
  class Model < Thor
    require 'active_support/inflector'
    include Thor::Actions

    def self.source_root
      "#{File.dirname(__FILE__)}/templates/generator/scaffold"
    end

    desc 'gmodel', 'Generates a skeleton model file under app/models for ActiveRecord or Sequel.'
    argument :model_name, required: true
    option :orm, required: false, default: 'activerecord', enum: %w[activerecord sequel]
    def g
      models_dir = 'app/models'
      models_dir = PraxisGenerator.scaffold_config[:models_dir] if PraxisGenerator.scaffold_config[:models_dir]
      # self.class.check_name(model_name)
      template_file = \
        if options[:orm] == 'activerecord'
          'models/active_record.rb'
        else
          'models/sequel.rb'
        end
      puts "Generating Model for #{model_name}"
      template template_file, "#{models_dir}/#{model_name}.rb"
      nil
    end
    # Helper functions (which are available in the ERB contexts)
    no_commands do
      def model_class
        model_name.camelize
      end
    end

    # TODO: do we want the argument to be camelcase? or snake case?
    def self.check_name(name)
      sanitized = name.downcase.gsub(/[^a-z0-9_]/, '')
      raise 'Please use only downcase letters, numbers and underscores for the model' unless sanitized == name
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
praxis-2.0.0 tasks/thor/model.rb
praxis-2.0.pre.40 tasks/thor/model.rb
praxis-2.0.pre.39 tasks/thor/model.rb
praxis-2.0.pre.38 tasks/thor/model.rb
praxis-2.0.pre.37 tasks/thor/model.rb
praxis-2.0.pre.36 tasks/thor/model.rb
praxis-2.0.pre.35 tasks/thor/model.rb
praxis-2.0.pre.34 tasks/thor/model.rb
praxis-2.0.pre.33 tasks/thor/model.rb
praxis-2.0.pre.32 tasks/thor/model.rb