flextures 1.0.6 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1,2 +1,2 @@
1
- 1.0.6
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.6"
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-24}
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 = [
@@ -13,9 +13,17 @@ module Flextures
13
13
 
14
14
  # テーブルモデルの作成
15
15
  def self.create_model table_name
16
- klass = Class.new ActiveRecord::Base
17
- klass.table_name=table_name
18
- klass
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.columns, Factory[table_name]
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
- h = filter.call h
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.columns, Factory[table_name]
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
- h = filter.call h
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 columns, factory=nil
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
- h.select! { |k,v| column_hash[k] } # テーブルに存在しないキーが定義されているときは削除
233
+ # テーブルに存在しないキーが定義されているときは削除
234
+ h.select! { |k,v| column_hash[k] }
235
+ o = klass.new
229
236
  # 値がnilでないなら型をDBで適切なものに変更
230
- h.each{ |k,v| nil==v || h[k] = TRANSLATER[column_hash[k].type].call(v) }
231
- not_nullable_columns.each{ |k| h[k]==nil && h[k] = TRANSLATER[column_hash[k].type].call(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
- st = OpenStruct.new(h)
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==h[k] && h[k] = COMPLETER[column_hash[k].type].call }
238
- h
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.6
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-24 00:00:00.000000000 +09:00
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: &77415060 !ruby/object:Gem::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: *77415060
25
+ version_requirements: *80302920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &77414810 !ruby/object:Gem::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: *77414810
36
+ version_requirements: *80302680
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &77414570 !ruby/object:Gem::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: *77414570
47
+ version_requirements: *80302410
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &77414320 !ruby/object:Gem::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: *77414320
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: 259543443
104
+ hash: -723323507
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements: