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 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: