flextures 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.0.3
data/flextures.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{flextures}
8
- s.version = "1.0.2"
8
+ s.version = "1.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["baban"]
@@ -17,7 +17,8 @@ module Flextures
17
17
  klass.table_name=table_name
18
18
  klass
19
19
  end
20
-
20
+
21
+ # 設定ファイルが存在すればロード
21
22
  def self.init_load
22
23
  if defined?(Rails) and Rails.root
23
24
  [
@@ -40,8 +41,8 @@ module Flextures
40
41
  table_names = ActiveRecord::Base.connection.tables if ""==table_names
41
42
  table_names = table_names.map{ |name| { table: name } }
42
43
  table_names = table_names.map{ |option| option.merge dir: ENV["DIR"] } if ENV["DIR"]
43
- table_names.first[:file] = ENV["FIXTURES"] if ENV["FIXTURES"] # ファイル名は最初のものしか指定できない
44
- table_names.first[:file] = ENV["F"] if ENV["F"]
44
+ table_names = ENV["FIXTURES"].split(',').map{ |name| { table: name } } if ENV["FIXTURES"]
45
+ table_names = ENV["F"].split(',').map{ |name| { table: name } } if ENV["F"]
45
46
  # read mode だとcsvもyaml存在しないファイルは返さない
46
47
  table_names.select! &exist if option[:mode] && option[:mode].to_sym == :read
47
48
  table_names
@@ -98,7 +99,7 @@ module Flextures
98
99
  attributes.map { |column|
99
100
  v = trans row.send(column)
100
101
  " #{column}: #{v}\n"
101
- }.join
102
+ }.*
102
103
  end
103
104
  end
104
105
  end
@@ -175,7 +176,11 @@ module Flextures
175
176
  keys = csv.shift # keyの設定
176
177
  warning "CSV", attributes, keys
177
178
  csv.each do |values|
178
- klass.create filter.call values.extend(Extensions::Array).to_hash(keys)
179
+ h = values.extend(Extensions::Array).to_hash(keys)
180
+ o = klass.new filter.call h
181
+ # idだけ特別扱いで保存
182
+ o.id = h["id"] if o.respond_to?(:id)
183
+ o.save
179
184
  end
180
185
  end
181
186
  end
@@ -193,7 +198,9 @@ module Flextures
193
198
  klass.delete_all
194
199
  YAML.load(File.open(inpfile)).each do |k,h|
195
200
  warning "YAML", attributes, h.keys
196
- klass.create filter.call h
201
+ o = klass.new filter.call h
202
+ o.id = h["id"] if o.respond_to?(:id)
203
+ o.save
197
204
  end
198
205
  end
199
206
 
@@ -210,11 +217,13 @@ module Flextures
210
217
  columns.each { |col| column_hash[col.name] = col }
211
218
  # 自動補完が必要なはずのカラム
212
219
  lack_columns = columns.select { |c| !c.null and !c.default }.map &:name
220
+ not_nullable_columns = columns.select { |c| !c.null }.map &:name
213
221
  # ハッシュを受け取って、必要な値に加工してからハッシュで返すラムダを返す
214
222
  return->(h){
215
223
  h.select! { |k,v| column_hash[k] } # テーブルに存在しないキーが定義されているときは削除
216
224
  # 値がnilでないなら型をDBで適切なものに変更
217
225
  h.each{ |k,v| nil==v || h[k] = TRANSLATER[column_hash[k].type].call(v) }
226
+ not_nullable_columns.each{ |k| h[k]==nil && h[k] = TRANSLATER[column_hash[k].type].call(k) }
218
227
  # FactoryFilterを動作させる
219
228
  st = OpenStruct.new(h)
220
229
  factory.call(st) if factory
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.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &90300620 !ruby/object:Gem::Requirement
17
+ requirement: &78827590 !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: *90300620
25
+ version_requirements: *78827590
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &90299730 !ruby/object:Gem::Requirement
28
+ requirement: &78827320 !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: *90299730
36
+ version_requirements: *78827320
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &90298880 !ruby/object:Gem::Requirement
39
+ requirement: &78827080 !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: *90298880
47
+ version_requirements: *78827080
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &90298600 !ruby/object:Gem::Requirement
50
+ requirement: &78826840 !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: *90298600
58
+ version_requirements: *78826840
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: 440737501
104
+ hash: 250641213
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements: