active_extend 0.0.3.1 → 0.0.3.2
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 +7 -0
- data/lib/active_extend.rb +1 -0
- data/lib/active_extend/hash_utils.rb +14 -0
- data/lib/active_extend/version.rb +1 -1
- data/lib/external_migration/migration.rb +41 -46
- data/lib/external_migration/text_fixed.rb +21 -1
- metadata +11 -14
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 318d41f7b21b50b7ca77c47277850ba49f3c5a50
|
4
|
+
data.tar.gz: 3d5435a4dbf060e3d4d5117f2febce9557db8f03
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6af14c9bbc9d1d1c2f2916a4f7f7b773046ced13f8d68e6e903eb70fc926e98f50d04768622dab6075bac72fa994dc43cd6e5262e0128db47b23c2b559006ebc
|
7
|
+
data.tar.gz: 7ed2147101edd4d44e5781192b9815faab619c4fee03469ba9103f8f3aea15eef9b632ff3b60885642e6e051685047ffa499cf01aa4220529b3be706f58b0ddc
|
data/lib/active_extend.rb
CHANGED
@@ -16,10 +16,28 @@ module ExternalMigration
|
|
16
16
|
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
# Module Data Transformation
|
19
|
+
# Module for Data Transformation
|
21
20
|
# When passing schema file or struct, the data between datasources
|
22
|
-
# needs a transformations
|
21
|
+
# needs a transformations.
|
22
|
+
# # called on start of transaction
|
23
|
+
# def begin_transaction(schema_from, schema_to)
|
24
|
+
#
|
25
|
+
# # definily obrigatory to define this method!<br>
|
26
|
+
# # Transform from data row to destinate data row
|
27
|
+
# # @result
|
28
|
+
# # - true means continue with your job
|
29
|
+
# # - false stop job now!
|
30
|
+
# # - :ignore ignore this chunk
|
31
|
+
# def transform(row)
|
32
|
+
#
|
33
|
+
# # called on ending migration
|
34
|
+
# def end(schema_from, schema_to)
|
35
|
+
#
|
36
|
+
# # called on ending transaction
|
37
|
+
# def end_transaction(schema_from, schema_to)
|
38
|
+
#
|
39
|
+
# def after_row_saved(row, object)
|
40
|
+
# @abstract
|
23
41
|
module Transformer
|
24
42
|
##
|
25
43
|
# called on start of migration
|
@@ -27,67 +45,43 @@ module ExternalMigration
|
|
27
45
|
@schema_from = schema_from
|
28
46
|
@schema_to = schema_to
|
29
47
|
end
|
30
|
-
|
31
|
-
|
32
|
-
#
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
#
|
39
|
-
#
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
##
|
45
|
-
# called on ending migration
|
46
|
-
def end(schema_from, schema_to)
|
47
|
-
# nothing
|
48
|
-
end
|
49
|
-
|
50
|
-
##
|
51
|
-
# called on ending transaction
|
52
|
-
def end_transaction(schema_from, schema_to)
|
53
|
-
# nothing
|
54
|
-
end
|
55
|
-
|
56
|
-
##
|
57
|
-
#
|
58
|
-
def after_row_saved(row, object)
|
59
|
-
#
|
60
|
-
end
|
61
|
-
|
48
|
+
|
49
|
+
# Ignore a field starts with ignore(.*): assumes length fields
|
50
|
+
# or separator
|
51
|
+
# @return [Hash] row without ignores
|
52
|
+
# @example
|
53
|
+
# schema:
|
54
|
+
# columns:
|
55
|
+
# digit:
|
56
|
+
# format: N
|
57
|
+
# length: 10
|
58
|
+
# ignore_not_need_this__really__so_i_ll_not_touch_this:
|
59
|
+
# length: 10000
|
62
60
|
def transform_ignore_fields(row)
|
63
|
-
#delete ignore
|
64
61
|
row.reject! { |key,value| key.to_s.start_with?("ignore") }
|
65
62
|
end
|
66
63
|
|
67
64
|
end
|
68
65
|
|
66
|
+
#Interface for your decoder
|
69
67
|
module Decoder
|
70
68
|
def migrate!
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
74
|
-
|
75
|
-
# == Class Migration
|
76
|
-
#
|
72
|
+
|
77
73
|
# Migrate data between data source and transforme to destination
|
78
|
-
#
|
79
74
|
class Migration
|
80
75
|
attr_accessor :schema_from, :schema_to, :transformer, :name, :processor
|
81
|
-
|
76
|
+
|
82
77
|
# constructor
|
83
78
|
def initialize(schema_url=nil)
|
84
79
|
self.load_schema(schema_url) unless schema_url.nil?
|
85
80
|
end
|
86
|
-
|
87
|
-
##
|
81
|
+
|
88
82
|
# load yml schemas from and to
|
89
83
|
def load_schema(url)
|
90
|
-
schema = YAML::load(File.open(url))
|
84
|
+
schema = YAML::load(File.open(url)).keys_to_sym
|
91
85
|
self.schema_from = schema[:from]
|
92
86
|
self.schema_to = schema[:to]
|
93
87
|
end
|
@@ -111,9 +105,10 @@ module ExternalMigration
|
|
111
105
|
begin_migration()
|
112
106
|
|
113
107
|
# TODO: Make flexible configurable and more input formats
|
114
|
-
|
108
|
+
case @schema_from[:format].to_s.to_sym
|
109
|
+
when :XLS
|
115
110
|
xls_migrate()
|
116
|
-
|
111
|
+
when :TXT_FIXED
|
117
112
|
decoder = ExternalMigration::TextFixed.new(@schema_from)
|
118
113
|
decoder.migration = self
|
119
114
|
decoder.migrate!
|
@@ -21,7 +21,17 @@ module ExternalMigration
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def schema=(schema)
|
24
|
-
|
24
|
+
|
25
|
+
if schema[:multiple_lines] == :true
|
26
|
+
@schema_multiple_lines = true
|
27
|
+
@schema_line_index = -1
|
28
|
+
@schema = schema
|
29
|
+
@schema_lines = @schema.columns.keys
|
30
|
+
@schema[:lines] = @schema[:columns] #backup layout
|
31
|
+
next_schema_line
|
32
|
+
else
|
33
|
+
@schema = schema
|
34
|
+
end
|
25
35
|
end
|
26
36
|
|
27
37
|
def migrate!
|
@@ -42,10 +52,20 @@ module ExternalMigration
|
|
42
52
|
end
|
43
53
|
row.keys.each {|k| row.delete k if k.to_s =~ /ignore\d+/ }
|
44
54
|
@migration.migrate_row! row
|
55
|
+
|
56
|
+
next_schema_line
|
45
57
|
end
|
46
58
|
file.close
|
47
59
|
|
48
60
|
end
|
61
|
+
|
62
|
+
def next_schema_line
|
63
|
+
if @schema_multiple_lines
|
64
|
+
@schema_line_index += 1
|
65
|
+
@schema_line_index = 0 if @schema_line_index >= @schema_lines.size
|
66
|
+
@schema[:columns] = @schema[:lines][@schema_lines[@schema_line_index]]
|
67
|
+
end
|
68
|
+
end
|
49
69
|
|
50
70
|
end
|
51
71
|
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_extend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bruno Guerra
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: spreadsheet
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,12 +34,12 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
|
-
description: many cool behaviors for
|
41
|
+
description: many cool behaviors for Activerecord like ActiveDisable, Hash.keys_to_sym
|
42
|
+
and more
|
47
43
|
email:
|
48
44
|
- bruno@woese.com
|
49
45
|
executables: []
|
@@ -51,6 +47,7 @@ extensions: []
|
|
51
47
|
extra_rdoc_files: []
|
52
48
|
files:
|
53
49
|
- lib/active_extend/active_disablable.rb
|
50
|
+
- lib/active_extend/hash_utils.rb
|
54
51
|
- lib/active_extend/railtie.rb
|
55
52
|
- lib/active_extend/string_helper.rb
|
56
53
|
- lib/active_extend/version.rb
|
@@ -69,27 +66,27 @@ files:
|
|
69
66
|
- Rakefile
|
70
67
|
- README.rdoc
|
71
68
|
homepage: http://www.woese.com
|
72
|
-
licenses:
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
73
72
|
post_install_message:
|
74
73
|
rdoc_options: []
|
75
74
|
require_paths:
|
76
75
|
- lib
|
77
76
|
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
77
|
requirements:
|
80
78
|
- - ! '>='
|
81
79
|
- !ruby/object:Gem::Version
|
82
80
|
version: '0'
|
83
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
82
|
requirements:
|
86
83
|
- - ! '>='
|
87
84
|
- !ruby/object:Gem::Version
|
88
85
|
version: '0'
|
89
86
|
requirements: []
|
90
87
|
rubyforge_project:
|
91
|
-
rubygems_version:
|
88
|
+
rubygems_version: 2.0.3
|
92
89
|
signing_key:
|
93
|
-
specification_version:
|
94
|
-
summary: many cool behaviors for
|
90
|
+
specification_version: 4
|
91
|
+
summary: many cool behaviors for ActiveRecord
|
95
92
|
test_files: []
|