flextures 1.0.2 → 1.0.3

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