Class: Scaffolding::Build

Inherits:
Object
  • Object
show all
Defined in:
lib/scaffolding.rb

Instance Method Summary collapse

Constructor Details

#initialize(source, name, auto, migrate, import) ⇒ Build

Returns a new instance of Build.



9
10
11
12
13
14
# File 'lib/scaffolding.rb', line 9

def initialize(source, name, auto, migrate, import)
  @source, @name, @auto, @migrate, @import = source, name, auto, migrate, import
  @uri = uri?
  upload?
  @parser = parser
end

Instance Method Details

#class_refObject



28
29
30
31
32
33
34
# File 'lib/scaffolding.rb', line 28

def class_ref
  if File.extname(@source) == ".csv" && @uri == nil
    "Csv"
  else
    "Raw"
  end
end

#errorsObject



54
55
56
57
58
59
60
61
# File 'lib/scaffolding.rb', line 54

def errors
  if @results.kind_of?(Array)
    @results.each do |error|
      puts "\e[31m#{error}\e[0m"
    end
    true
  end
end

#generateObject



50
51
52
# File 'lib/scaffolding.rb', line 50

def generate
  Rails::Generators::Base.new.generate "scaffold", @results
end

#import_browser_dataObject



89
90
91
92
93
94
# File 'lib/scaffolding.rb', line 89

def import_browser_data
  @parser.groom_data
  @results = @parser.import_data
  return if errors
  {saved: @results[:saved], failed: @results[:failed]}
end

#import_dataObject



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/scaffolding.rb', line 76

def import_data
  unless @import
    puts "\n\n\e[32mImport the data from #{@source}?(y/n)\e[0m\n"
    answer = STDIN.gets.chomp.downcase
  end
  if @import || answer == "y"
    @results = @parser.import_data
    return if errors
    puts "\e[32m#{@results[:saved]}\e[0m records saved"
    puts "\e[31m#{@results[:failed]}\e[0m records failed"
  end
end

#migrate_databaseObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/scaffolding.rb', line 63

def migrate_database
  unless @migrate
    puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
    answer = STDIN.gets.chomp.downcase
  end
  if @migrate || answer == "y"
    Rake::Task["db:migrate"].reenable
    Rake::Task["db:migrate"].invoke
  else
    false
  end
end

#parserObject



24
25
26
# File 'lib/scaffolding.rb', line 24

def parser
  "Scaffolding::Parser::#{class_ref}".constantize.new(@source, @name, @auto, @uri)
end

#stackObject



43
44
45
46
47
48
# File 'lib/scaffolding.rb', line 43

def stack
  @results = @parser.results
  return if errors
  generate
  import_data if migrate_database
end

#time(method) ⇒ Object



36
37
38
39
40
41
# File 'lib/scaffolding.rb', line 36

def time(method)
  beginning_time = Time.now
  self.send(method)
  end_time = Time.now
  puts "#{@parser.source_name} processed in #{(end_time - beginning_time).round(2)} seconds\n\n"
end

#upload?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/scaffolding.rb', line 20

def upload?
  @source = @source.path if @source.class == ActionDispatch::Http::UploadedFile
end

#uri?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/scaffolding.rb', line 16

def uri?
  @source =~ URI::regexp
end