scaffolding 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/CODE_OF_CONDUCT.md +0 -0
- data/Gemfile +0 -1
- data/LICENSE.txt +0 -0
- data/README.md +1 -1
- data/Rakefile +4 -38
- data/lib/scaffolding.rb +5 -0
- data/lib/scaffolding/parser/base.rb +6 -12
- data/lib/scaffolding/parser/csv.rb +21 -5
- data/lib/scaffolding/parser/importer/csvdata.rb +27 -0
- data/lib/scaffolding/railtie.rb +3 -2
- data/lib/scaffolding/version.rb +1 -1
- data/lib/tasks/generators.rake +78 -0
- data/scaffolding.gemspec +0 -0
- metadata +6 -5
- data/lib/scaffolding/parser/importer/excel.rb +0 -18
- data/lib/scaffolding/tasks/generators.rake +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7db66db198a6e54944b9b8bd4a74949f9d2fa0af
|
4
|
+
data.tar.gz: b4624c9d80eecd21f76b3b8f43bf38cb76755dd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 921de695c8568b7086924dc5d1fffa782d7782319e57d506efe89dd6dd6106dfd4f62aef4b90df7afe51a137b161da9ab7118dbe3cf5984b27418b99a9080b53
|
7
|
+
data.tar.gz: 64b84c22c0fb91242ddd7221fceed21dce0e8d215aba6ef610a62e1d57a36613fbc5b34b76fdc22ea1c96bfa1ab65fafea143122226727a743724ec79f42153a
|
data/.gitignore
CHANGED
File without changes
|
data/CODE_OF_CONDUCT.md
CHANGED
File without changes
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -3,42 +3,8 @@ require 'csv'
|
|
3
3
|
|
4
4
|
#C:\Users\jdejong\Desktop\Windows.csv
|
5
5
|
#C:\Users\jdejong\Desktop\data.xlsx
|
6
|
+
# /Users/Jordandejong/Desktop/ht.csv
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
system "clear" or system "cls"
|
11
|
-
puts "\n***** Scaffolding Gem *****\n\n\n"
|
12
|
-
puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
|
13
|
-
puts "Example:"
|
14
|
-
puts '../../../../desktop/mac.csv'
|
15
|
-
puts 'C:\Users\username\Desktop\Windows.csv'
|
16
|
-
puts ""
|
17
|
-
@file = STDIN.gets.chomp
|
18
|
-
|
19
|
-
results = Scaffolding.generate(@file)
|
20
|
-
if results.kind_of?(Array)
|
21
|
-
results.each do |error|
|
22
|
-
puts "\e[31m#{error}\e[0m"
|
23
|
-
end
|
24
|
-
puts ""
|
25
|
-
next
|
26
|
-
end
|
27
|
-
|
28
|
-
puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
|
29
|
-
|
30
|
-
if STDIN.gets.chomp == "y"
|
31
|
-
puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
|
32
|
-
|
33
|
-
if STDIN.gets.chomp == "y"
|
34
|
-
exec results.to_s + "; rake db:migrate"
|
35
|
-
else
|
36
|
-
exec results.to_s
|
37
|
-
end
|
38
|
-
|
39
|
-
else
|
40
|
-
puts "\nHeres the code:"
|
41
|
-
puts results.to_s
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
8
|
+
#
|
9
|
+
# task :b do |t|
|
10
|
+
# end
|
data/lib/scaffolding.rb
CHANGED
@@ -6,7 +6,12 @@ module Scaffolding
|
|
6
6
|
def self.generate(file)
|
7
7
|
Scaffolding::Parser::Csv.process(file)
|
8
8
|
end
|
9
|
+
|
10
|
+
def self.import_data(file)
|
11
|
+
Scaffolding::Parser::Importer::CsvData.process(file)
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
require 'scaffolding/parser/base'
|
12
16
|
require 'scaffolding/parser/csv'
|
17
|
+
require 'scaffolding/parser/importer/csvdata'
|
@@ -2,12 +2,13 @@ module Scaffolding
|
|
2
2
|
module Parser
|
3
3
|
class Base
|
4
4
|
require 'rails'
|
5
|
+
require 'csv'
|
5
6
|
|
6
7
|
def initialize(file="")
|
7
8
|
@errors = []
|
8
9
|
@data = valid_data?(file)
|
9
|
-
@file_name = File.basename(file, ".*" ).to_s.split.join.camelize
|
10
|
-
@
|
10
|
+
@file_name = File.basename(file, ".*" ).to_s.split.join.camelize.strip.singularize
|
11
|
+
@scaffold_builder = @file_name
|
11
12
|
@scaffolding = {}
|
12
13
|
end
|
13
14
|
|
@@ -17,7 +18,8 @@ module Scaffolding
|
|
17
18
|
|
18
19
|
def valid_data?(file)
|
19
20
|
unless file == ""
|
20
|
-
if [".csv", ".xls", ".xlsx"].include? File.extname(file)
|
21
|
+
# if [".csv", ".xls", ".xlsx"].include? File.extname(file)
|
22
|
+
if File.extname(file) == ".csv"
|
21
23
|
File.read(utf8_encode(file))
|
22
24
|
else
|
23
25
|
@errors << "Unknown file type: #{File.extname(file)}"
|
@@ -33,14 +35,6 @@ module Scaffolding
|
|
33
35
|
s.force_encoding(Encoding::ISO_8859_1).encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
|
34
36
|
end
|
35
37
|
|
36
|
-
def code_string
|
37
|
-
process_data
|
38
|
-
@scaffolding.each do |k, v|
|
39
|
-
@code_string << " #{k}:#{v}"
|
40
|
-
end
|
41
|
-
@code_string
|
42
|
-
end
|
43
|
-
|
44
38
|
def data_types
|
45
39
|
{string: 0, date: 0, integer: 0, boolean: 0, decimal: 0, time: 0, datetime: 0}
|
46
40
|
end
|
@@ -48,7 +42,7 @@ module Scaffolding
|
|
48
42
|
def self.process(file)
|
49
43
|
importer = self.new(file)
|
50
44
|
return importer.errors unless importer.errors.count == 0
|
51
|
-
importer.
|
45
|
+
importer.process_data
|
52
46
|
end
|
53
47
|
|
54
48
|
end
|
@@ -22,10 +22,11 @@ module Scaffolding
|
|
22
22
|
process_row(row.inject({}){|row,(k,v)| row[k.downcase.to_sym] = v; row})
|
23
23
|
rescue => e
|
24
24
|
@errors << "Unable to process row #{@row_number} Error: #{e}\n"
|
25
|
-
end
|
25
|
+
end
|
26
26
|
end
|
27
|
+
return @errors unless @errors.count == 0
|
27
28
|
scaffold_rank
|
28
|
-
|
29
|
+
results
|
29
30
|
end
|
30
31
|
|
31
32
|
def setup_columns(columns)
|
@@ -48,12 +49,27 @@ module Scaffolding
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def scaffold_rank
|
52
|
+
puts "\n\e[33mManually choose data types?(y/n)\e[0m"
|
53
|
+
@manual = STDIN.gets.chomp
|
54
|
+
|
51
55
|
@scaffolding.each do |scaffold, data_types|
|
52
56
|
data_type = data_types.max_by{|k,v| v}[0]
|
53
|
-
|
54
|
-
|
55
|
-
|
57
|
+
|
58
|
+
if @manual == "y"
|
59
|
+
puts "\n\e[32m#{scaffold}\e[0m is a \e[33m#{data_type}\e[0m? (y/string/integer/date ect)"
|
60
|
+
answer = STDIN.gets.chomp
|
61
|
+
data_type = answer unless answer == "y"
|
62
|
+
end
|
63
|
+
|
64
|
+
@scaffolding[scaffold] = data_type
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def results
|
69
|
+
@scaffolding.each do |k, v|
|
70
|
+
@scaffold_builder << " #{k}:#{v}" unless k.to_s.downcase == "id"
|
56
71
|
end
|
72
|
+
@scaffold_builder
|
57
73
|
end
|
58
74
|
|
59
75
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Scaffolding
|
2
|
+
module Parser
|
3
|
+
module Importer
|
4
|
+
class CsvData < Scaffolding::Parser::Csv
|
5
|
+
|
6
|
+
def initialize(file="")
|
7
|
+
super
|
8
|
+
@saved = 0
|
9
|
+
@failed = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def process_row(row)
|
13
|
+
model = @file_name.classify.constantize.new(row.except!(:id))
|
14
|
+
model.save ? @saved += 1 : @failed += 1
|
15
|
+
end
|
16
|
+
|
17
|
+
def scaffold_rank
|
18
|
+
end
|
19
|
+
|
20
|
+
def results
|
21
|
+
{saved: @saved, failed: @failed}
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/scaffolding/railtie.rb
CHANGED
@@ -3,10 +3,11 @@ require 'rails'
|
|
3
3
|
|
4
4
|
module Scaffolding
|
5
5
|
class Generators < Rails::Railtie
|
6
|
+
railtie_name :builders
|
6
7
|
|
7
8
|
rake_tasks do
|
8
|
-
load "../scaffolding/lib/scaffolding/tasks/generators.rake"
|
9
|
+
# load "../scaffolding/lib/scaffolding/tasks/generators.rake"
|
10
|
+
load "tasks/generators.rake"
|
9
11
|
end
|
10
|
-
|
11
12
|
end
|
12
13
|
end
|
data/lib/scaffolding/version.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
namespace :g do
|
2
|
+
desc 'generate a scaffold from a csv file'
|
3
|
+
task :scaffold do |t|
|
4
|
+
# require 'rails/generators'
|
5
|
+
require 'scaffolding'
|
6
|
+
|
7
|
+
system "clear" or system "cls"
|
8
|
+
puts "\n***** Scaffolding Gem *****\n\n\n"
|
9
|
+
puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
|
10
|
+
puts "You are currently here: #{Dir.pwd}\n\n"
|
11
|
+
file = STDIN.gets.chomp
|
12
|
+
|
13
|
+
results = Scaffolding.generate(file)
|
14
|
+
if results.kind_of?(Array)
|
15
|
+
results.each do |error|
|
16
|
+
puts "\e[31m#{error}\e[0m"
|
17
|
+
end
|
18
|
+
puts ""
|
19
|
+
next
|
20
|
+
end
|
21
|
+
|
22
|
+
puts "\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
|
23
|
+
if STDIN.gets.chomp == "y"
|
24
|
+
executions = ""
|
25
|
+
|
26
|
+
puts "\n\e[32mMigrate the database?(y/n)\e[0m\n"
|
27
|
+
if STDIN.gets.chomp == "y"
|
28
|
+
executions << "; rake db:migrate"
|
29
|
+
|
30
|
+
puts "\n\e[32mImport the data from #{file}?(y/n)\e[0m\n"
|
31
|
+
if STDIN.gets.chomp == "y"
|
32
|
+
executions << "; rake import:csv:data[#{file}]"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
exec "rails g scaffold " + results.to_s + executions
|
36
|
+
else
|
37
|
+
|
38
|
+
# puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
|
39
|
+
# if STDIN.gets.chomp == "y"
|
40
|
+
# Rails::Generators.invoke("active_record:model", results)
|
41
|
+
#
|
42
|
+
# puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
|
43
|
+
# if STDIN.gets.chomp == "y"
|
44
|
+
# Rake::Task["db:migrate"].invoke
|
45
|
+
#
|
46
|
+
# puts "\n\n\e[32mImport the data from #{file}?(y/n)\e[0m\n"
|
47
|
+
# if STDIN.gets.chomp == "y"
|
48
|
+
# Scaffolding.import_data(file)
|
49
|
+
#
|
50
|
+
# end
|
51
|
+
# end
|
52
|
+
# else
|
53
|
+
|
54
|
+
puts "Heres the code:"
|
55
|
+
puts "rails g scaffold" + results.to_s
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
namespace :import do
|
61
|
+
namespace :csv do
|
62
|
+
desc 'Import data from CSV file'
|
63
|
+
task :data, [:file] => :environment do |t, args|
|
64
|
+
results = Scaffolding.import_data(args[:file])
|
65
|
+
if results.kind_of?(Array)
|
66
|
+
results.each do |error|
|
67
|
+
puts "\e[31m#{error}\e[0m"
|
68
|
+
end
|
69
|
+
puts ""
|
70
|
+
next
|
71
|
+
else
|
72
|
+
results.each do |k,v|
|
73
|
+
puts "#{v} records #{k}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/scaffolding.gemspec
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaffolding
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan-deJong
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,10 +56,10 @@ files:
|
|
56
56
|
- lib/scaffolding.rb
|
57
57
|
- lib/scaffolding/parser/base.rb
|
58
58
|
- lib/scaffolding/parser/csv.rb
|
59
|
-
- lib/scaffolding/parser/importer/
|
59
|
+
- lib/scaffolding/parser/importer/csvdata.rb
|
60
60
|
- lib/scaffolding/railtie.rb
|
61
|
-
- lib/scaffolding/tasks/generators.rake
|
62
61
|
- lib/scaffolding/version.rb
|
62
|
+
- lib/tasks/generators.rake
|
63
63
|
- scaffolding.gemspec
|
64
64
|
homepage: https://github.com/Jordan-deJong/scaffolding
|
65
65
|
licenses:
|
@@ -81,8 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
version: '0'
|
82
82
|
requirements: []
|
83
83
|
rubyforge_project:
|
84
|
-
rubygems_version: 2.4.
|
84
|
+
rubygems_version: 2.4.5
|
85
85
|
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Generate a rails scaffold based on a CSV file.
|
88
88
|
test_files: []
|
89
|
+
has_rdoc:
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Scaffolding
|
2
|
-
module Parser
|
3
|
-
module Importer
|
4
|
-
class ExcelData < Scaffolding::Parser::Excel
|
5
|
-
|
6
|
-
def process_row(row)
|
7
|
-
row.each do |column, data|
|
8
|
-
data_type = :string
|
9
|
-
data_type = :date if Date.parse(data) rescue data_type
|
10
|
-
data_type = :integer if Integer(data) rescue data_type
|
11
|
-
@scaffolding[column.to_sym][data_type] += 1
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
namespace :g do
|
2
|
-
desc 'generate a scaffold from file'
|
3
|
-
task :scaffold do |t|
|
4
|
-
require 'scaffolding'
|
5
|
-
|
6
|
-
system "clear" or system "cls"
|
7
|
-
puts "\n***** Scaffolding Gem *****\n\n\n"
|
8
|
-
puts "\e[32mEnter a relative file name to build the scaffold\e[0m\n"
|
9
|
-
puts "Example:"
|
10
|
-
puts '../../../../desktop/mac.csv'
|
11
|
-
puts 'C:\Users\username\Desktop\Windows.csv'
|
12
|
-
puts ""
|
13
|
-
@file = STDIN.gets.chomp
|
14
|
-
|
15
|
-
results = Scaffolding.generate(@file)
|
16
|
-
if results.kind_of?(Array)
|
17
|
-
results.each do |error|
|
18
|
-
puts "\e[31m#{error}\e[0m"
|
19
|
-
end
|
20
|
-
puts ""
|
21
|
-
next
|
22
|
-
end
|
23
|
-
|
24
|
-
puts "\n\n\n\e[32mWould you like to generate the scaffold now?(y/n)\e[0m"
|
25
|
-
|
26
|
-
if STDIN.gets.chomp == "y"
|
27
|
-
puts "\n\n\e[32mMigrate the database?(y/n)\e[0m\n"
|
28
|
-
|
29
|
-
if STDIN.gets.chomp == "y"
|
30
|
-
exec results.to_s + "; rake db:migrate"
|
31
|
-
else
|
32
|
-
exec results.to_s
|
33
|
-
end
|
34
|
-
|
35
|
-
else
|
36
|
-
puts "\nHeres the code:"
|
37
|
-
puts results.to_s
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|