flextures 1.9.4 → 1.9.5

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.9.4
1
+ 1.9.5
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.9.4"
8
+ s.version = "1.9.5"
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-03-05}
12
+ s.date = %q{2012-03-10}
13
13
  s.description = %q{load and dump fixtures}
14
14
  s.email = %q{babanba.n@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -47,7 +47,13 @@ module Flextures
47
47
  def self.init_tables
48
48
  tables = ActiveRecord::Base.connection.tables
49
49
  tables.delete "schema_migrations"
50
- tables.each{ |name| Class.new(ActiveRecord::Base){ |o| o.table_name=name }.delete_all }
50
+ tables.each{ |name|
51
+ # テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
52
+ begin
53
+ Class.new(ActiveRecord::Base){ |o| o.table_name= name }.delete_all
54
+ rescue => e
55
+ end
56
+ }
51
57
  end
52
58
 
53
59
  # 引数解析
@@ -152,7 +158,7 @@ module Flextures
152
158
  time:->{ DateTime.now },
153
159
  timestamp:->{ DateTime.now },
154
160
  }
155
-
161
+
156
162
  # 型の変換を行う
157
163
  TRANSLATER = {
158
164
  binary:->(d){ d.to_i },
@@ -204,6 +210,7 @@ module Flextures
204
210
  klass = PARENT::create_model table_name
205
211
  attributes = klass.columns.map &:name
206
212
  filter = create_filter klass, Factory[table_name]
213
+ klass.delete_all
207
214
  CSV.open( inpfile ) do |csv|
208
215
  keys = csv.shift # keyの設定
209
216
  warning "CSV", attributes, keys
@@ -233,7 +240,7 @@ module Flextures
233
240
  o.save
234
241
  end
235
242
  end
236
-
243
+
237
244
  # 欠けたカラムを検知してメッセージを出しておく
238
245
  def self.warning format, attributes, keys
239
246
  (attributes-keys).each { |name| print "Warning: #{format} colum is missing! [#{name}]\n" }
@@ -3,6 +3,7 @@
3
3
  # 基本設定を記述する
4
4
  module Flextures
5
5
  module Config
6
+ READ_ONLYS=[]
6
7
  @@configs={
7
8
  fixture_load_directory: "spec/fixtures/",
8
9
  fixture_dump_directory: "spec/fixtures/",
@@ -11,8 +12,8 @@ module Flextures
11
12
  # ハッシュをsetter、getterに変換
12
13
  class<< self
13
14
  @@configs.each do |setting_key, setting_value|
14
- define_method setting_key do @@configs[setting_key] end
15
- define_method "#{setting_key}=" do |arg| @@configs[setting_key]=arg end
15
+ define_method(setting_key){ @@configs[setting_key] } unless READ_ONLYS.include?(setting_key)
16
+ define_method("#{setting_key}="){ |arg| @@configs[setting_key]=arg }
16
17
  end
17
18
  end
18
19
  end
@@ -9,21 +9,41 @@ module RSpec
9
9
  end
10
10
  end
11
11
  end
12
+
13
+ module Rails
14
+ module FlextureSupport
15
+ @@configs={ load_count: 0 }
16
+ def self.included(m)
17
+ # 一番外側のdescribeにだけ追加
18
+ #m.after { Flextures::init_tables } if @@configs[:load_count]==0
19
+ @@configs[:load_count] += 1
20
+ end
21
+ end
22
+ end
23
+
24
+ RSpec.configure do |c|
25
+ c.include RSpec::Rails::FlextureSupport
26
+ end
12
27
  end
13
28
 
14
29
  # 既存のsetup_fixturesの機能を上書きする必要があったのでこちらを作成
15
30
  module ActiveRecord
16
31
  module TestFixtures
32
+ @@flextures_config = { count: 0 }
33
+
17
34
  alias :flextures_backup_setup_fixtures :setup_fixtures
18
35
  def setup_fixtures
19
- flextures_backup_setup_fixtures
20
36
  Flextures::init_load
37
+ Flextures::init_tables if @@flextures_config[:count] == 0
38
+ @@flextures_config[:count] += 1
39
+
40
+ flextures_backup_setup_fixtures
21
41
  end
22
42
 
23
43
  alias :flextures_backup_teardown_fixtures :teardown_fixtures
24
44
  def teardown_fixtures
25
- flextures_backup_teardown_fixtures
26
45
  Flextures::init_tables if Flextures::Config.init_all_tables
46
+ flextures_backup_teardown_fixtures
27
47
  end
28
48
  end
29
49
  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.9.4
4
+ version: 1.9.5
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-03-05 00:00:00.000000000 +09:00
12
+ date: 2012-03-10 00:00:00.000000000 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
17
- requirement: &86528270 !ruby/object:Gem::Requirement
17
+ requirement: &90050990 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.0.0
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *86528270
25
+ version_requirements: *90050990
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: jeweler
28
- requirement: &86527970 !ruby/object:Gem::Requirement
28
+ requirement: &90050690 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.6.4
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *86527970
36
+ version_requirements: *90050690
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rcov
39
- requirement: &86527720 !ruby/object:Gem::Requirement
39
+ requirement: &90050440 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *86527720
47
+ version_requirements: *90050440
48
48
  description: load and dump fixtures
49
49
  email: babanba.n@gmail.com
50
50
  executables: []
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  segments:
92
92
  - 0
93
- hash: -1060100081
93
+ hash: -67127249
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements: