rakudax 0.0.2 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16e1ac7c716daf1d050b7ef3d779d1e16f407a17
4
- data.tar.gz: 674b9f92096848f6abfb2ccc14dd2e90530cee5d
3
+ metadata.gz: d0133d67c8077e0783de657fc0faf371dcdb9640
4
+ data.tar.gz: 2772df29ce95d41582feee38807d63f8d3fb21c7
5
5
  SHA512:
6
- metadata.gz: 43cade6050aff5688e19bee6e6a3eedd159a63db8f19a44f7cc8eeacdd609ff345e17cf24ae59333d36081fffe19c40558fd13f2278079f20b19ebbb8054a707
7
- data.tar.gz: 314230af2f57b428ed6d6d9f99fcc4c56091e657e700a6d555be91db8f65f8c5fe8111cd21d1f99e309c4d6adea8e1699f5e7b33c6ab29970914c4304b0091bf
6
+ metadata.gz: b1916510396898fd49d544a336c59432599b2b6822a1541f1f4992c446d5e5abce5a9653244aade0a2346f58a79a73773cf5adda6d662e69767cd4ec4202bd6b
7
+ data.tar.gz: 9ca207960046f624c940933eb154300f8874f4ad7a77f1179d2080e403ca3743f697f5adc22db63cd35f60f8a52e8340c823a5351e58cd71baed82ae099fb568
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Build Status](https://travis-ci.org/tlab-jp/rakudax.svg?branch=master)](https://travis-ci.org/tlab-jp/rakudax)
4
4
  [![Code Climate](https://codeclimate.com/github/tlab-jp/rakudax/badges/gpa.svg)](https://codeclimate.com/github/tlab-jp/rakudax)
5
5
  [![Test Coverage](https://codeclimate.com/github/tlab-jp/rakudax/badges/coverage.svg)](https://codeclimate.com/github/tlab-jp/rakudax/coverage)
6
+ [![Gem Version](https://badge.fury.io/rb/rakudax.svg)](https://badge.fury.io/rb/rakudax)
6
7
 
7
8
  Data migration tool using (ruby)Active Record.
8
9
  For more information about [tlab-jp/rakuda](https://github.com/tlab-jp/rakuda).
data/lib/rakudax/skel.rb CHANGED
@@ -36,7 +36,14 @@ development:
36
36
  MIGRATE_YAML=<<-EOS
37
37
  default: &default
38
38
  force_reset: true # truncate all data
39
- models: []
39
+ batch_size: 1000 # the size of the batch
40
+ models:
41
+ - name: Sample # require
42
+ auto_matching: true
43
+ before:
44
+ db: sample_before # require
45
+ after:
46
+ db: sample_after # require
40
47
 
41
48
  production:
42
49
  <<: *default
@@ -13,8 +13,11 @@ module Rakudax
13
13
  include GeneralAttributes
14
14
  rescue
15
15
  end
16
- #{"attr_accessor :id" if !model.id.nil? && model.auto_numbering}
17
16
  "
17
+ if !model.id.nil? && model.auto_numbering
18
+ gen_code += "attr_accessor :id
19
+ "
20
+ end
18
21
  (model.associations || []).each do |asc|
19
22
  next unless asc.method
20
23
  next unless asc.scope
@@ -31,14 +34,19 @@ module Rakudax
31
34
 
32
35
  (model.modules || []).each do |mdl|
33
36
  gen_code += "include #{mdl}
34
- end
35
37
  "
36
38
  end
39
+ gen_code += "
40
+ end"
37
41
 
38
42
  puts gen_code if Rakudax::Base.debug
39
43
  eval gen_code
40
44
  const_get(classname_before).establish_connection Rakudax::Base.dbconfig[model.db]
41
- const_get(classname_before).table_name = model.table unless model.table.nil?
45
+ unless model.table.nil?
46
+ const_get(classname_before).table_name = model.table
47
+ else
48
+ const_get(classname_before).table_name = classname.tableize
49
+ end
42
50
  const_get(classname_before).primary_key = model.id.to_sym unless model.id.nil?
43
51
  const_get(classname_before).inheritance_column = nil if model.inheritance
44
52
 
@@ -113,27 +121,32 @@ module Rakudax
113
121
  end
114
122
  end
115
123
 
116
- scope = const_get(classname_before).all
124
+ scope = const_get(classname_before).order(const_get(classname_before).primary_key)
117
125
  data_count = scope.count
118
126
  print "Migrate #{const_get(classname).to_s}#{"s" if data_count > 1}(#{data_count}) ..."
119
- scope.each do |data|
120
- obj = const_get(classname).new
121
- if migration.auto_matching
122
- const_get(classname).attribute_names.each do |key|
123
- puts key
124
- obj.send("#{key}=", data.send(key)) if data.attribute_names.include?(key)
127
+ batch_size = Rakudax::Settings.batch_size || 1000
128
+ (1+data_count/batch_size).times do |i|
129
+ offset = (i * batch_size)
130
+ limit = data_count - i*batch_size
131
+ limit = batch_size if limit > batch_size
132
+ next if limit == 0
133
+ scope.offset(offset).limit(limit).each do |data|
134
+ obj = const_get(classname).new
135
+ if migration.auto_matching
136
+ const_get(classname).attribute_names.each do |key|
137
+ obj.send("#{key}=", data.send(key)) if data.attribute_names.include?(key)
138
+ end
125
139
  end
126
- end
127
- puts migration.attributes
128
- (migration.attributes || {}).each do |key1, key2|
129
- obj.send("#{key2}=", data.send(key1))
130
- end
131
- begin
132
- unless obj.save
133
- STDERR.puts "Fatal Error: New #{classname} cant create. #{obj.errors.full_messages}"
140
+ (migration.attributes || {}).each do |key1, key2|
141
+ obj.send("#{key2}=", data.send(key1))
142
+ end
143
+ begin
144
+ unless obj.save
145
+ STDERR.puts "Fatal Error: New #{classname} cant create. #{obj.errors.full_messages}"
146
+ end
147
+ rescue => ex
148
+ STDERR.puts "Fatal Error: New #{classname} cant create. #{hash} (#{ex.message})"
134
149
  end
135
- rescue => ex
136
- STDERR.puts "Fatal Error: New #{classname} cant create. #{hash} (#{ex.message})"
137
150
  end
138
151
  end
139
152
 
@@ -1,3 +1,3 @@
1
1
  module Rakudax
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.1"
3
3
  end
data/rakudax.gemspec CHANGED
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.bindir = "exe"
19
19
  spec.executables = ["rakudax"]
20
20
  spec.require_paths = ["lib"]
21
+ spec.required_ruby_version = '~> 2.2'
21
22
 
22
- spec.add_development_dependency 'activerecord', "~> 4.0"
23
- spec.add_development_dependency 'activesupport', "~> 4.0"
24
- spec.add_development_dependency 'settingslogic', "~> 2.0"
23
+ spec.add_dependency 'activerecord', "~> 4.0"
24
+ spec.add_dependency 'activesupport', "~> 4.0"
25
+ spec.add_dependency 'settingslogic', "~> 2.0"
25
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakudax
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - metalels
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-06-27 00:00:00.000000000 Z
12
+ date: 2016-10-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -18,7 +18,7 @@ dependencies:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '4.0'
21
- type: :development
21
+ type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
@@ -32,7 +32,7 @@ dependencies:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '4.0'
35
- type: :development
35
+ type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
@@ -46,7 +46,7 @@ dependencies:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '2.0'
49
- type: :development
49
+ type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
@@ -94,9 +94,9 @@ require_paths:
94
94
  - lib
95
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ">="
97
+ - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '0'
99
+ version: '2.2'
100
100
  required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="