flextures 1.9.2 → 1.9.4

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