Class: ModelCommand

Inherits:
MoreUtils show all
Defined in:
lib/commands/model.rb

Class Method Summary collapse

Methods inherited from MoreUtils

flag_lookup, gem_version, get_args, get_file_str, get_flags, root, this_dir, write_file

Class Method Details

.run(*args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/commands/model.rb', line 7

def run *args
    lookup = flag_lookup(args)
    arguments = get_args(args)

    if arguments.length < 2
        puts "Enter a valid model generation command."
        return 
    end

    model_name = arguments[0].camelcase
    others = arguments[1..-1]

    system("rails generate model #{model_name} #{others.join(' ')}")

    api_version_path = lookup[:"api-version"] || 'api/v1'

    system("mkdir -p #{root}/app/controllers/#{api_version_path}")
    controller_prefix = api_version_path.split('/').map { |e| e.downcase.capitalize }.join('::')
    controller_name = controller_prefix + '::' + model_name

    controller_temp =  get_file_str("#{this_dir}/../templates/controller.txt")
    controller_regex = '{{ CONTROLLER_NAME }}'
    controller_str = controller_temp.gsub(controller_regex, controller_name)
    write_file("#{root}/app/controllers/#{api_version_path}/#{model_name.underscore}_controller.rb", controller_str)

    puts "#{model_name} model, migration, and controller has been generated."
end