flextures 1.0.6 → 1.0.8
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.
- data/VERSION +1 -1
- data/flextures.gemspec +2 -2
- data/lib/flextures/flextures.rb +25 -20
- metadata +11 -11
data/VERSION
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.8
|
2
2
|
|
data/flextures.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{flextures}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["baban"]
|
12
|
-
s.date = %q{2012-01-
|
12
|
+
s.date = %q{2012-01-26}
|
13
13
|
s.description = %q{load and dump fixtures}
|
14
14
|
s.email = %q{babanba.n@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/flextures/flextures.rb
CHANGED
@@ -13,9 +13,17 @@ module Flextures
|
|
13
13
|
|
14
14
|
# テーブルモデルの作成
|
15
15
|
def self.create_model table_name
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
a = proc {
|
17
|
+
begin
|
18
|
+
table_name.singularize.camelize.constantize
|
19
|
+
rescue => e
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
}
|
23
|
+
b = proc {
|
24
|
+
Class.new(ActiveRecord::Base){ |o| o.table_name=table_name }
|
25
|
+
}
|
26
|
+
a.call || b.call
|
19
27
|
end
|
20
28
|
|
21
29
|
# 設定ファイルが存在すればロード
|
@@ -175,16 +183,14 @@ module Flextures
|
|
175
183
|
inpfile = "#{dir_name}#{file_name}.csv"
|
176
184
|
klass = PARENT::create_model table_name
|
177
185
|
attributes = klass.columns.map &:name
|
178
|
-
filter = create_filter klass
|
186
|
+
filter = create_filter klass, Factory[table_name]
|
179
187
|
klass.delete_all
|
180
188
|
CSV.open( inpfile ) do |csv|
|
181
189
|
keys = csv.shift # keyの設定
|
182
190
|
warning "CSV", attributes, keys
|
183
191
|
csv.each do |values|
|
184
192
|
h = values.extend(Extensions::Array).to_hash(keys)
|
185
|
-
|
186
|
-
o = klass.new
|
187
|
-
h.each{ |k,v| o[k]=v }
|
193
|
+
o = filter.call h
|
188
194
|
o.save
|
189
195
|
end
|
190
196
|
end
|
@@ -198,13 +204,11 @@ module Flextures
|
|
198
204
|
inpfile = "#{dir_name}#{file_name}.yml"
|
199
205
|
klass = PARENT::create_model table_name
|
200
206
|
attributes = klass.columns.map &:name
|
201
|
-
filter = create_filter klass
|
207
|
+
filter = create_filter klass, Factory[table_name]
|
202
208
|
klass.delete_all
|
203
209
|
YAML.load(File.open(inpfile)).each do |k,h|
|
204
210
|
warning "YAML", attributes, h.keys
|
205
|
-
|
206
|
-
o = klass.new
|
207
|
-
h.each{ |k,v| o[k]=v }
|
211
|
+
o = filter.call h
|
208
212
|
o.save
|
209
213
|
end
|
210
214
|
end
|
@@ -216,7 +220,8 @@ module Flextures
|
|
216
220
|
end
|
217
221
|
|
218
222
|
# フィクスチャから取り出した値を、加工して欲しいデータにするフィルタを作成して返す
|
219
|
-
def self.create_filter
|
223
|
+
def self.create_filter klass, factory=nil
|
224
|
+
columns = klass.columns
|
220
225
|
# テーブルからカラム情報を取り出し
|
221
226
|
column_hash = {}
|
222
227
|
columns.each { |col| column_hash[col.name] = col }
|
@@ -225,17 +230,17 @@ module Flextures
|
|
225
230
|
not_nullable_columns = columns.select { |c| !c.null }.map &:name
|
226
231
|
# ハッシュを受け取って、必要な値に加工してからハッシュで返すラムダを返す
|
227
232
|
return->(h){
|
228
|
-
|
233
|
+
# テーブルに存在しないキーが定義されているときは削除
|
234
|
+
h.select! { |k,v| column_hash[k] }
|
235
|
+
o = klass.new
|
229
236
|
# 値がnilでないなら型をDBで適切なものに変更
|
230
|
-
h.each{ |k,v| nil==v ||
|
231
|
-
not_nullable_columns.each{ |k|
|
237
|
+
h.each{ |k,v| nil==v || o[k] = TRANSLATER[column_hash[k].type].call(v) }
|
238
|
+
not_nullable_columns.each{ |k| o[k]==nil && o[k] = TRANSLATER[column_hash[k].type].call(k) }
|
232
239
|
# FactoryFilterを動作させる
|
233
|
-
|
234
|
-
factory.call(st) if factory
|
235
|
-
h = st.to_hash
|
240
|
+
factory.call(o) if factory
|
236
241
|
# 値がnilの列にデフォルト値を補間
|
237
|
-
lack_columns.each { |k| nil==
|
238
|
-
|
242
|
+
lack_columns.each { |k| nil==o[k] && o[k] = COMPLETER[column_hash[k].type].call }
|
243
|
+
o
|
239
244
|
}
|
240
245
|
end
|
241
246
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flextures
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-26 00:00:00.000000000 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
requirement: &
|
17
|
+
requirement: &80302920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *80302920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
requirement: &
|
28
|
+
requirement: &80302680 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *80302680
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: jeweler
|
39
|
-
requirement: &
|
39
|
+
requirement: &80302410 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.6.4
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *80302410
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rcov
|
50
|
-
requirement: &
|
50
|
+
requirement: &80302150 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *80302150
|
59
59
|
description: load and dump fixtures
|
60
60
|
email: babanba.n@gmail.com
|
61
61
|
executables: []
|
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
segments:
|
103
103
|
- 0
|
104
|
-
hash:
|
104
|
+
hash: -723323507
|
105
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|