flextures 4.0.1 → 4.1.0
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/Gemfile.lock +17 -4
- data/flextures.gemspec +4 -3
- data/lib/flextures.rb +2 -1
- data/lib/flextures/flextures.rb +29 -32
- data/lib/flextures/flextures_command.rb +3 -4
- data/lib/flextures/flextures_loader.rb +78 -46
- data/lib/flextures/rspec_flextures_support.rb +9 -2
- data/lib/flextures/version.rb +1 -1
- metadata +39 -13
- data/lib/flextures/flextures_extension_modules.rb +0 -19
- data/test/unit/flextures_extention_modules_test.rb +0 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2712b12b0de4f85effbdb3be89c88fc0217397ef
|
4
|
+
data.tar.gz: 348adf4807760f5155eaa8d3b3e9b0d3a702aff2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbc454cc0aa60de6d9562dced99c7a5c13bf2eb2a3dc4ccb83c92b5015bf254269a45650c11224d19265be01f94a9b216930e8a729d85db6c27cc1805199b0b2
|
7
|
+
data.tar.gz: 487d9167c8150ff3e416ef02db0d2147526694c7004205cc386d0061b4f9c4a81b70b6e7e4067f2c6a00da3417aaf0b12d3addb1c5a83513c481ceff55d83aba
|
data/Gemfile.lock
CHANGED
@@ -1,17 +1,31 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
flextures (4.0
|
4
|
+
flextures (4.1.0)
|
5
|
+
activerecord
|
6
|
+
activerecord-import
|
7
|
+
activesupport
|
5
8
|
|
6
9
|
GEM
|
7
10
|
remote: https://rubygems.org/
|
8
11
|
specs:
|
9
|
-
|
12
|
+
activemodel (4.2.6)
|
13
|
+
activesupport (= 4.2.6)
|
14
|
+
builder (~> 3.1)
|
15
|
+
activerecord (4.2.6)
|
16
|
+
activemodel (= 4.2.6)
|
17
|
+
activesupport (= 4.2.6)
|
18
|
+
arel (~> 6.0)
|
19
|
+
activerecord-import (0.13.0)
|
20
|
+
activerecord (>= 3.0)
|
21
|
+
activesupport (4.2.6)
|
10
22
|
i18n (~> 0.7)
|
11
23
|
json (~> 1.7, >= 1.7.7)
|
12
24
|
minitest (~> 5.1)
|
13
25
|
thread_safe (~> 0.3, >= 0.3.4)
|
14
26
|
tzinfo (~> 1.1)
|
27
|
+
arel (6.0.3)
|
28
|
+
builder (3.2.2)
|
15
29
|
i18n (0.7.0)
|
16
30
|
json (1.8.3)
|
17
31
|
minitest (5.4.0)
|
@@ -34,7 +48,6 @@ PLATFORMS
|
|
34
48
|
ruby
|
35
49
|
|
36
50
|
DEPENDENCIES
|
37
|
-
activesupport
|
38
51
|
bundler (~> 1.6)
|
39
52
|
flextures!
|
40
53
|
minitest (= 5.4.0)
|
@@ -45,4 +58,4 @@ DEPENDENCIES
|
|
45
58
|
rake
|
46
59
|
|
47
60
|
BUNDLED WITH
|
48
|
-
1.
|
61
|
+
1.11.2
|
data/flextures.gemspec
CHANGED
@@ -15,12 +15,13 @@ Gem::Specification.new do |spec|
|
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
#spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
18
|
spec.test_files = ["test/unit/flextures_args_test.rb"]
|
20
19
|
spec.require_paths = ["lib"]
|
21
20
|
|
21
|
+
spec.add_dependency "activerecord"
|
22
|
+
spec.add_dependency "activesupport"
|
23
|
+
spec.add_dependency "activerecord-import"
|
24
|
+
|
22
25
|
spec.add_development_dependency "bundler", "~> 1.6"
|
23
26
|
spec.add_development_dependency "rake"
|
24
|
-
spec.add_development_dependency "activesupport"
|
25
|
-
#spec.add_development_dependency "minitest", "5.4.0"
|
26
27
|
end
|
data/lib/flextures.rb
CHANGED
data/lib/flextures/flextures.rb
CHANGED
@@ -1,31 +1,28 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'csv'
|
3
1
|
require "flextures/flextures_base_config"
|
4
|
-
require "flextures/flextures_extension_modules"
|
5
2
|
require "flextures/flextures_factory"
|
6
3
|
|
7
4
|
module Flextures
|
8
5
|
# guessing ActiveRecord Model name by table_name and create
|
9
6
|
# @params [String|Symbol] table_name
|
10
7
|
# @params [ActiveRecord::Base] model class
|
11
|
-
def self.create_model(
|
8
|
+
def self.create_model(table_name)
|
12
9
|
# when Model is defined in FactoryFilter
|
13
|
-
a = ->
|
10
|
+
a = -> do
|
14
11
|
f = Factory::FACTORIES[table_name.to_sym]
|
15
12
|
f && f[:model]
|
16
|
-
|
13
|
+
end
|
17
14
|
# when program can guess Model name by table_name
|
18
|
-
b = ->
|
15
|
+
b = -> do
|
19
16
|
begin
|
20
17
|
table_name.singularize.camelize.constantize
|
21
18
|
rescue => e
|
22
19
|
nil
|
23
20
|
end
|
24
|
-
|
21
|
+
end
|
25
22
|
# when cannot guess Model name
|
26
|
-
c = ->
|
23
|
+
c = -> do
|
27
24
|
Class.new(ActiveRecord::Base){ |o| o.table_name=table_name }
|
28
|
-
|
25
|
+
end
|
29
26
|
a.call || b.call || c.call
|
30
27
|
end
|
31
28
|
|
@@ -57,7 +54,7 @@ module Flextures
|
|
57
54
|
end
|
58
55
|
end
|
59
56
|
|
60
|
-
def self.delete_tables(
|
57
|
+
def self.delete_tables(*tables)
|
61
58
|
tables.each do |name|
|
62
59
|
# if 'name' variable is 'database view', raise error
|
63
60
|
begin
|
@@ -69,7 +66,7 @@ module Flextures
|
|
69
66
|
|
70
67
|
# It is debug method to use like 'tab' method
|
71
68
|
# @params [Proc] dumper write dump information
|
72
|
-
def self.table_tap(
|
69
|
+
def self.table_tap(&dumper)
|
73
70
|
tables = Flextures::deletable_tables
|
74
71
|
tables.each do |name|
|
75
72
|
# if 'name' variable is 'database view', raise error
|
@@ -84,12 +81,12 @@ module Flextures
|
|
84
81
|
# parse arguments functions.
|
85
82
|
module ARGS
|
86
83
|
# parse rake ENV parameters
|
87
|
-
def self.parse( option={}
|
84
|
+
def self.parse(env={}, option={})
|
88
85
|
table_names = []
|
89
|
-
if v = (
|
86
|
+
if v = (env["T"] or env["TABLE"])
|
90
87
|
table_names = v.split(',').map{ |name| { table: name, file: name } }
|
91
88
|
end
|
92
|
-
if v = (
|
89
|
+
if v = (env["M"] or env["MODEL"])
|
93
90
|
table_names = v.split(',').map do |name|
|
94
91
|
name = name.constantize.table_name
|
95
92
|
{ table: name, file: name }
|
@@ -98,30 +95,30 @@ module Flextures
|
|
98
95
|
|
99
96
|
table_names = Flextures::deletable_tables.map{ |name| { table: name, file: name } } if table_names.empty?
|
100
97
|
|
101
|
-
# parse
|
102
|
-
fixtures_args_parser
|
98
|
+
# parse env["FIXTURES"] paameter
|
99
|
+
fixtures_args_parser = ->(s){
|
103
100
|
names = s.split(',')
|
104
|
-
if
|
105
|
-
[ table_names.first.merge(
|
101
|
+
if env["TABLE"] or env["T"] or env["MODEL"] or env["M"]
|
102
|
+
[ table_names.first.merge(file: names.first) ]
|
106
103
|
else
|
107
104
|
names.map{ |name| { table: name, file: name } }
|
108
105
|
end
|
109
106
|
}
|
110
107
|
# parse filename and define parameters.
|
111
|
-
table_names = fixtures_args_parser.call
|
112
|
-
table_names = fixtures_args_parser.call
|
113
|
-
table_names = fixtures_args_parser.call
|
108
|
+
table_names = fixtures_args_parser.call env["FIXTURES"] if env["FIXTURES"]
|
109
|
+
table_names = fixtures_args_parser.call env["FILE"] if env["FILE"]
|
110
|
+
table_names = fixtures_args_parser.call env["F"] if env["F"]
|
114
111
|
|
115
|
-
table_names = table_names.map{ |option| option.merge(
|
116
|
-
table_names = table_names.map{ |option| option.merge(
|
112
|
+
table_names = table_names.map{ |option| option.merge(dir: env["DIR"]) } if env["DIR"]
|
113
|
+
table_names = table_names.map{ |option| option.merge(dir: env["D"]) } if env["D"]
|
117
114
|
|
118
|
-
table_names = table_names.map{ |option| option.merge(
|
119
|
-
table_names = table_names.map{ |option| option.merge(
|
115
|
+
table_names = table_names.map{ |option| option.merge(minus: env["MINUS"].to_s.split(",")) } if env["MINUS"]
|
116
|
+
table_names = table_names.map{ |option| option.merge(plus: env["PLUS"].to_s.split(",")) } if env["PLUS"]
|
120
117
|
|
121
|
-
table_names = table_names.map{ |option| option.merge(
|
122
|
-
table_names = table_names.map{ |option| option.merge(
|
123
|
-
table_names = table_names.map{ |option| option.merge(
|
124
|
-
table_names = table_names.map{ |option| option.merge(
|
118
|
+
table_names = table_names.map{ |option| option.merge(silent: true) } if env["OPTION"].to_s.split(",").include?("silent")
|
119
|
+
table_names = table_names.map{ |option| option.merge(unfilter: true) } if env["OPTION"].to_s.split(",").include?("unfilter")
|
120
|
+
table_names = table_names.map{ |option| option.merge(strict: true) } if env["OPTION"].to_s.split(",").include?("strict")
|
121
|
+
table_names = table_names.map{ |option| option.merge(stair: true) } if env["OPTION"].to_s.split(",").include?("stair")
|
125
122
|
|
126
123
|
# if mode is 'read mode' and file is not exist, value is not return.
|
127
124
|
table_names.select!(&exist) if option[:mode] && option[:mode] == 'read'
|
@@ -130,8 +127,8 @@ module Flextures
|
|
130
127
|
|
131
128
|
# check exist filename block
|
132
129
|
def self.exist
|
133
|
-
return->(name){ File.exists?(
|
134
|
-
File.exists?(
|
130
|
+
return->(name){ File.exists?(File.join(Flextures::Configuration.load_directory, "#{name}.csv")) or
|
131
|
+
File.exists?(File.join(Flextures::Configuration.load_directory, "#{name}.yml")) }
|
135
132
|
end
|
136
133
|
end
|
137
134
|
end
|
@@ -2,7 +2,6 @@ require 'ostruct'
|
|
2
2
|
require 'csv'
|
3
3
|
|
4
4
|
require 'flextures/flextures_base_config'
|
5
|
-
require 'flextures/flextures_extension_modules'
|
6
5
|
require 'flextures/flextures'
|
7
6
|
require 'flextures/flextures_factory'
|
8
7
|
|
@@ -11,7 +10,7 @@ module Flextures
|
|
11
10
|
module Command
|
12
11
|
def self.dump
|
13
12
|
Flextures::load_configurations
|
14
|
-
table_names = Flextures::ARGS.parse
|
13
|
+
table_names = Flextures::ARGS.parse(ENV)
|
15
14
|
puts "dumping..."
|
16
15
|
case ENV["FORMAT"].to_s.to_sym
|
17
16
|
when :yml,:yaml
|
@@ -25,7 +24,7 @@ module Flextures
|
|
25
24
|
|
26
25
|
def self.load
|
27
26
|
Flextures::load_configurations
|
28
|
-
table_names = Flextures::ARGS.parse
|
27
|
+
table_names = Flextures::ARGS.parse(ENV)
|
29
28
|
Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
|
30
29
|
file_format = ENV["FORMAT"]
|
31
30
|
puts "loading..."
|
@@ -42,7 +41,7 @@ module Flextures
|
|
42
41
|
# load and dump data
|
43
42
|
def self.generate
|
44
43
|
Flextures::load_configurations
|
45
|
-
table_names = Flextures::ARGS.parse
|
44
|
+
table_names = Flextures::ARGS.parse(ENV)
|
46
45
|
Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
|
47
46
|
file_format = ENV["FORMAT"]
|
48
47
|
puts "generating..."
|
@@ -1,15 +1,33 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
require 'csv'
|
3
|
+
require 'erb'
|
4
|
+
|
5
|
+
require 'active_record'
|
6
|
+
require 'activerecord-import'
|
3
7
|
|
4
8
|
require 'flextures/flextures_base_config'
|
5
|
-
require 'flextures/flextures_extension_modules'
|
6
9
|
require 'flextures/flextures'
|
7
10
|
require 'flextures/flextures_factory'
|
8
11
|
|
9
12
|
module Flextures
|
10
13
|
# data loader
|
11
14
|
class Loader
|
15
|
+
module ArrayEx
|
16
|
+
refine Array do
|
17
|
+
# @params [Array] keys hash keys
|
18
|
+
# @return [Hash] tanslated Hash data
|
19
|
+
def to_hash(keys)
|
20
|
+
values = self
|
21
|
+
values = values[0..keys.size-1] if keys.size < values.size
|
22
|
+
values = values+[nil]*(keys.size-values.size) if keys.size > values.size
|
23
|
+
[keys,values].transpose.reduce({}){ |h,pair| k,v=pair; h[k]=v; h }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
using ArrayEx
|
28
|
+
|
12
29
|
PARENT = Flextures
|
30
|
+
FORMATS = [ %i[csv erb], %i[erb csv], %i[csv], %i[yml erb], %i[erb yml], %i[yml] ]
|
13
31
|
|
14
32
|
# column set default value
|
15
33
|
COMPLETER = {
|
@@ -97,19 +115,17 @@ module Flextures
|
|
97
115
|
end
|
98
116
|
|
99
117
|
def self.cache?(params)
|
100
|
-
|
101
|
-
param = params.first
|
102
|
-
param[:cache] == true
|
103
|
-
end
|
104
|
-
end
|
118
|
+
return unless params.first.is_a?(Hash)
|
105
119
|
|
106
|
-
|
120
|
+
param = params.first
|
121
|
+
param[:cache] == true
|
107
122
|
end
|
108
123
|
|
109
124
|
# compare
|
110
125
|
def equal_table_data?(src, dst)
|
111
126
|
return false unless src.is_a?(Hash)
|
112
127
|
return false unless dst.is_a?(Hash)
|
128
|
+
|
113
129
|
(src.to_a - dst.to_a).empty?
|
114
130
|
end
|
115
131
|
|
@@ -165,67 +181,82 @@ module Flextures
|
|
165
181
|
|
166
182
|
# @return [Proc] order rule block (user Array#sort methd)
|
167
183
|
def self.loading_order
|
168
|
-
->(a,b)
|
184
|
+
->(a,b) do
|
169
185
|
a = Flextures::Configuration.table_load_order.index(a) || -1
|
170
186
|
b = Flextures::Configuration.table_load_order.index(b) || -1
|
171
187
|
b <=> a
|
172
|
-
|
188
|
+
end
|
173
189
|
end
|
174
190
|
|
175
191
|
# load fixture data
|
176
192
|
# fixture file prefer YAML to CSV
|
177
193
|
# @params [Hash] format file load format(table name, file name, options...)
|
178
194
|
def self.load(format)
|
179
|
-
file_name,
|
180
|
-
|
181
|
-
|
195
|
+
file_name, *exts = file_exist(format)
|
196
|
+
format[:erb] = exts.include?(:erb)
|
197
|
+
method = exts.detect { |k| [:csv, :yml].include?(k) }
|
198
|
+
|
199
|
+
return unless self.file_loadable?(format, file_name)
|
200
|
+
|
201
|
+
klass, filter = self.create_model_filter(format, file_name, method)
|
202
|
+
|
203
|
+
case method
|
204
|
+
when :csv
|
205
|
+
self.load_csv(format, klass, filter, file_name)
|
206
|
+
when :yml
|
207
|
+
self.load_yml(format, klass, filter, file_name)
|
182
208
|
else
|
183
209
|
puts "Warning: #{file_name} is not exist!" unless format[:silent]
|
184
210
|
end
|
185
211
|
end
|
186
212
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
213
|
+
def self.load_file(format, file_name)
|
214
|
+
file = nil
|
215
|
+
if format[:erb]
|
216
|
+
str = File.open(file_name){ |f| f.read }
|
217
|
+
file = ERB.new(str).result
|
218
|
+
else
|
219
|
+
file = File.open(file_name)
|
220
|
+
end
|
195
221
|
end
|
196
222
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
return unless self.file_loadable?(format, file_name)
|
204
|
-
|
205
|
-
klass, filter = self.create_model_filter(format, file_name, type)
|
206
|
-
self.load_yml(format, klass, filter, file_name)
|
223
|
+
def self.load_csv(format, klass, filter, file_name)
|
224
|
+
file = self.load_file(format, file_name)
|
225
|
+
CSV.open(file) do |csv|
|
226
|
+
self.load_csv_row(csv, format, klass, filter, file_name)
|
227
|
+
end
|
228
|
+
file_name
|
207
229
|
end
|
208
230
|
|
209
|
-
def self.
|
231
|
+
def self.load_csv_row(csv, format, klass, filter, file_name)
|
210
232
|
attributes = klass.columns.map(&:name)
|
211
|
-
|
212
|
-
|
213
|
-
|
233
|
+
keys = csv.shift # active record column names
|
234
|
+
|
235
|
+
warning("CSV", attributes, keys) unless format[:silent]
|
236
|
+
|
237
|
+
ActiveRecord::Base.transaction do
|
214
238
|
csv.each do |values|
|
215
|
-
h = values.
|
216
|
-
filter.call(h)
|
239
|
+
h = values.to_hash(keys)
|
240
|
+
o = filter.call(h)
|
241
|
+
o.save(validation: false)
|
217
242
|
end
|
218
243
|
end
|
219
|
-
file_name
|
220
244
|
end
|
221
245
|
|
222
246
|
def self.load_yml(format, klass, filter, file_name)
|
223
|
-
|
247
|
+
file = self.load_file(format, file_name)
|
248
|
+
yaml = YAML.load(file)
|
249
|
+
|
224
250
|
return false unless yaml # if file is empty
|
251
|
+
|
225
252
|
attributes = klass.columns.map(&:name)
|
226
|
-
|
227
|
-
|
228
|
-
|
253
|
+
ActiveRecord::Base.transaction do
|
254
|
+
yaml.each do |k,h|
|
255
|
+
warning("YAML", attributes, h.keys) unless format[:silent]
|
256
|
+
|
257
|
+
o = filter.call(h)
|
258
|
+
o.save(validation: false)
|
259
|
+
end
|
229
260
|
end
|
230
261
|
file_name
|
231
262
|
end
|
@@ -257,6 +288,7 @@ module Flextures
|
|
257
288
|
# return ["foo/bar/baz","foo/bar","foo",""]
|
258
289
|
def self.stair_list(dir, stair=true)
|
259
290
|
return [dir.to_s] unless stair
|
291
|
+
|
260
292
|
l = []
|
261
293
|
dir.to_s.split("/").reduce([]){ |a,d| a<< d; l.unshift(a.join("/")); a }
|
262
294
|
l<< ""
|
@@ -272,10 +304,12 @@ module Flextures
|
|
272
304
|
base_dir_name = Flextures::Configuration.load_directory
|
273
305
|
self.stair_list(format[:dir], format[:stair]).each do |dir|
|
274
306
|
file_path = File.join(base_dir_name, dir, file_name)
|
275
|
-
|
276
|
-
|
307
|
+
formats = FORMATS.select { |fmt| (type & fmt).present? }
|
308
|
+
formats.each do |fmt|
|
309
|
+
return ["#{file_path}.#{fmt.join('.')}", *fmt] if File.exist?("#{file_path}.#{fmt.join('.')}")
|
310
|
+
end
|
277
311
|
end
|
278
|
-
[
|
312
|
+
["#{File.join(base_dir_name, file_name)}.csv", nil]
|
279
313
|
end
|
280
314
|
|
281
315
|
# file load check
|
@@ -296,7 +330,6 @@ module Flextures
|
|
296
330
|
def self.create_model_filter(format, file_name, type)
|
297
331
|
table_name = format[:table].to_s
|
298
332
|
klass = PARENT::create_model(table_name)
|
299
|
-
# binding.pry
|
300
333
|
# if you use 'rails3_acts_as_paranoid' gem, that is not delete data 'delete_all' method
|
301
334
|
klass.send(klass.respond_to?(:delete_all!) ? :delete_all! : :delete_all)
|
302
335
|
|
@@ -304,7 +337,6 @@ module Flextures
|
|
304
337
|
filter = create_filter(klass, LoadFilter[table_name.to_sym], file_name, type, format)
|
305
338
|
o = klass.new
|
306
339
|
o = filter.call(o, h)
|
307
|
-
o.save(validate: false)
|
308
340
|
o
|
309
341
|
}
|
310
342
|
[klass, filter]
|
@@ -146,8 +146,15 @@ module ActiveRecord
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def flextures_set_options(options)
|
149
|
-
|
150
|
-
|
149
|
+
get_or_initialize_flextures_loader_options.merge!(options)
|
150
|
+
end
|
151
|
+
|
152
|
+
def flextures_instance
|
153
|
+
self
|
154
|
+
end
|
155
|
+
|
156
|
+
def flextures_options
|
157
|
+
@flextures_loader_options
|
151
158
|
end
|
152
159
|
end
|
153
160
|
end
|
data/lib/flextures/version.rb
CHANGED
metadata
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flextures
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- baban
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
type: :
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -39,7 +39,35 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activerecord-import
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.6'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
73
|
- - ">="
|
@@ -75,7 +103,6 @@ files:
|
|
75
103
|
- lib/flextures/flextures_base_config.rb
|
76
104
|
- lib/flextures/flextures_command.rb
|
77
105
|
- lib/flextures/flextures_dumper.rb
|
78
|
-
- lib/flextures/flextures_extension_modules.rb
|
79
106
|
- lib/flextures/flextures_factory.rb
|
80
107
|
- lib/flextures/flextures_loader.rb
|
81
108
|
- lib/flextures/flextures_railtie.rb
|
@@ -85,7 +112,6 @@ files:
|
|
85
112
|
- test/test_helper.rb
|
86
113
|
- test/unit/flextures_args_test.rb
|
87
114
|
- test/unit/flextures_dumper_test.rb
|
88
|
-
- test/unit/flextures_extention_modules_test.rb
|
89
115
|
- test/unit/flextures_hooks_test.rb
|
90
116
|
- test/unit/flextures_loader_test.rb
|
91
117
|
homepage: http://github.com/baban/flextures
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
|
-
module Flextures
|
4
|
-
module Extensions
|
5
|
-
module Array
|
6
|
-
# use Object#extend
|
7
|
-
# @params [Array] keys hash keys
|
8
|
-
# @return [Hash] tanslated Hash data
|
9
|
-
# example:
|
10
|
-
# hash = array.extend(Extensions::Array).to_hash(keys)
|
11
|
-
def to_hash(keys)
|
12
|
-
values = self
|
13
|
-
values = values[0..keys.size-1] if keys.size < values.size
|
14
|
-
values = values+[nil]*(keys.size-values.size) if keys.size > values.size
|
15
|
-
[keys,values].transpose.reduce({}){ |h,pair| k,v=pair; h[k]=v; h }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
$:.push( File.join(File.dirname(File.expand_path(__FILE__)), '../') )
|
2
|
-
require 'test_helper'
|
3
|
-
|
4
|
-
describe :Extention do
|
5
|
-
describe "Array#to_hash" do
|
6
|
-
describe "when column size is equal data size" do
|
7
|
-
before do
|
8
|
-
@keys = %W[id name hp]
|
9
|
-
@values = %W[1 hoge 100]
|
10
|
-
@h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "return hash" do
|
14
|
-
assert_equal @h, { "id"=>"1", "name"=>"hoge", "hp"=>"100" }
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "when column size is bigger than data size" do
|
19
|
-
before do
|
20
|
-
@keys = %W[id name hp]
|
21
|
-
@values = %W[1 hoge]
|
22
|
-
@h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "return hash, overflow key is filled 'nil'" do
|
26
|
-
assert_equal @h, { "id"=>"1", "name"=>"hoge", "hp"=> nil }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "when column size is smaller than data size" do
|
31
|
-
before do
|
32
|
-
@keys = %W[id name]
|
33
|
-
@values = %W[1 hoge 200]
|
34
|
-
@h = @values.extend(Flextures::Extensions::Array).to_hash(@keys)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "return hash, overflow value is cut offed" do
|
38
|
-
assert_equal @h, { "id"=>"1", "name"=>"hoge" }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|