flextures 1.9.2 → 1.9.4

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.9.2
1
+ 1.9.4
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.2"
8
+ s.version = "1.9.4"
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-02-20}
12
+ s.date = %q{2012-03-05}
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,17 +13,24 @@ module Flextures
13
13
 
14
14
  # テーブルモデルの作成
15
15
  def self.create_model table_name
16
- a = proc {
16
+ # Factoryにオプションで指定があった時
17
+ a = ->{
18
+ f = Factory::FACTORIES[table_name.to_sym]
19
+ f && f[:model]
20
+ }
21
+ # テーブル名からモデル名が推測できるとき
22
+ b = ->{
17
23
  begin
18
24
  table_name.singularize.camelize.constantize
19
25
  rescue => e
20
26
  nil
21
27
  end
22
28
  }
23
- b = proc {
29
+ # モデル名推測不可能なとき
30
+ c = ->{
24
31
  Class.new(ActiveRecord::Base){ |o| o.table_name=table_name }
25
32
  }
26
- a.call || b.call
33
+ a.call || b.call || c.call
27
34
  end
28
35
 
29
36
  # 設定ファイルが存在すればロード
@@ -6,6 +6,7 @@ module Flextures
6
6
  @@configs={
7
7
  fixture_load_directory: "spec/fixtures/",
8
8
  fixture_dump_directory: "spec/fixtures/",
9
+ init_all_tables: true, # 実行後に全テーブルの初期化を行うか?falseにするとそのぶん高速化できる
9
10
  }
10
11
  # ハッシュをsetter、getterに変換
11
12
  class<< self
@@ -3,15 +3,29 @@
3
3
  module Flextures
4
4
  # ロードするデータを必要に応じて加工する
5
5
  class Factory
6
+ # 設置ファイルから取得した Factoryの一覧を取得
6
7
  FACTORIES={}
8
+
7
9
  # Factory を定義
8
- def self.define table_name, &block
9
- FACTORIES[table_name.to_sym]=block
10
+ # @params table_name
11
+ # @params options
12
+ # @params block
13
+ # @return Flextures::Factory
14
+ def self.define table_name, *options, &block
15
+ h={ block: block }
16
+ options.each do |o|
17
+ begin
18
+ h[:model] = o if o.new.is_a? ActiveRecord::Base
19
+ rescue
20
+ end
21
+ end
22
+ FACTORIES[table_name.to_sym]=h
10
23
  end
11
24
 
12
25
  # Factoryを取得
13
26
  def self.get table_name
14
- FACTORIES[table_name.to_sym]
27
+ f = FACTORIES[table_name.to_sym]
28
+ f && f[:block]
15
29
  end
16
30
  def self.[](table_name); self.get(table_name); end
17
31
  end
@@ -9,20 +9,22 @@ module RSpec
9
9
  end
10
10
  end
11
11
  end
12
+ end
12
13
 
13
- module Rails
14
- module FlextureSupport
15
- @@configs={ load_count: 0 }
16
- def self.included(m)
17
- # 一番外側のdescribeにだけ追加
18
- m.before { Flextures::init_load; Flextures::init_tables } if @@configs[:load_count]==0
19
- @@configs[:load_count] += 1
20
- end
14
+ # 既存のsetup_fixturesの機能を上書きする必要があったのでこちらを作成
15
+ module ActiveRecord
16
+ module TestFixtures
17
+ alias :flextures_backup_setup_fixtures :setup_fixtures
18
+ def setup_fixtures
19
+ flextures_backup_setup_fixtures
20
+ Flextures::init_load
21
21
  end
22
- end
23
22
 
24
- RSpec.configure do |c|
25
- c.include RSpec::Rails::FlextureSupport
23
+ alias :flextures_backup_teardown_fixtures :teardown_fixtures
24
+ def teardown_fixtures
25
+ flextures_backup_teardown_fixtures
26
+ Flextures::init_tables if Flextures::Config.init_all_tables
27
+ end
26
28
  end
27
29
  end
28
30
 
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.2
4
+ version: 1.9.4
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-02-20 00:00:00.000000000 +09:00
12
+ date: 2012-03-05 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: &78755580 !ruby/object:Gem::Requirement
17
+ requirement: &86528270 !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: *78755580
25
+ version_requirements: *86528270
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: jeweler
28
- requirement: &78755310 !ruby/object:Gem::Requirement
28
+ requirement: &86527970 !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: *78755310
36
+ version_requirements: *86527970
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rcov
39
- requirement: &78755040 !ruby/object:Gem::Requirement
39
+ requirement: &86527720 !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: *78755040
47
+ version_requirements: *86527720
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: -33878253
93
+ hash: -1060100081
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements: