flextures 1.9.7 → 1.9.8
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/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/flextures.gemspec +2 -2
- data/lib/flextures/flextures.rb +23 -4
- data/lib/flextures/flextures_dumper.rb +63 -25
- data/lib/flextures/flextures_loader.rb +48 -12
- data/lib/flextures/rspec_flextures_support.rb +5 -13
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.9.
|
1
|
+
1.9.8
|
data/flextures.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "flextures"
|
8
|
-
s.version = "1.9.
|
8
|
+
s.version = "1.9.8"
|
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 = "2012-04-
|
12
|
+
s.date = "2012-04-20"
|
13
13
|
s.description = "load and dump fixtures"
|
14
14
|
s.email = "babanba.n@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/flextures/flextures.rb
CHANGED
@@ -44,16 +44,35 @@ module Flextures
|
|
44
44
|
end
|
45
45
|
|
46
46
|
# テーブル情報の初期化
|
47
|
-
def self.init_tables
|
47
|
+
def self.init_tables(ignore_tables=[])
|
48
48
|
tables = ActiveRecord::Base.connection.tables
|
49
49
|
tables.delete "schema_migrations"
|
50
|
-
tables.
|
50
|
+
tables.delete ignore_tables
|
51
|
+
tables.each do |name|
|
51
52
|
# テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
|
52
53
|
begin
|
53
|
-
Class.new(ActiveRecord::Base){ |o| o.table_name= name }
|
54
|
+
klass = Class.new(ActiveRecord::Base){ |o| o.table_name= name }
|
55
|
+
klass.delete_all
|
54
56
|
rescue => e
|
57
|
+
p :init_table_error
|
58
|
+
p klass.table_name
|
55
59
|
end
|
56
|
-
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# デバッグ用のメソッド、渡されたブロックを実行する
|
64
|
+
# 主にテーブルの今の中身を覗きたい時に使う
|
65
|
+
def self.table_tap &dumper
|
66
|
+
tables = ActiveRecord::Base.connection.tables
|
67
|
+
tables.delete "schema_migrations"
|
68
|
+
tables.each do |name|
|
69
|
+
# テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
|
70
|
+
begin
|
71
|
+
klass = Class.new(ActiveRecord::Base){ |o| o.table_name= name; }
|
72
|
+
dumper.call klass
|
73
|
+
rescue => e
|
74
|
+
end
|
75
|
+
end
|
57
76
|
end
|
58
77
|
|
59
78
|
# 引数解析
|
@@ -6,69 +6,107 @@ module Flextures
|
|
6
6
|
PARENT = Flextures
|
7
7
|
|
8
8
|
TRANSLATER = {
|
9
|
-
binary:->(d, format ){
|
9
|
+
binary:->( d, format ){
|
10
|
+
if format == :yml
|
11
|
+
return "null" if d.nil?
|
12
|
+
end
|
10
13
|
d.to_s
|
11
14
|
},
|
12
|
-
boolean:->(d, format ){
|
15
|
+
boolean:->( d, format ){
|
16
|
+
if format == :yml
|
17
|
+
return "null" if d.nil?
|
18
|
+
end
|
13
19
|
(0==d || ""==d || !d) ? false : true
|
14
20
|
},
|
15
|
-
date:->(d, format ){
|
21
|
+
date:->( d, format ){
|
16
22
|
if format == :yml
|
17
23
|
return "null" if d.nil?
|
24
|
+
return "null" if d==""
|
25
|
+
return "null" if d==false
|
18
26
|
end
|
19
|
-
|
27
|
+
d.to_s
|
20
28
|
},
|
21
|
-
datetime:->(d, format ){
|
22
|
-
|
29
|
+
datetime:->( d, format ){
|
30
|
+
if format == :yml
|
31
|
+
return "null" if d.nil?
|
32
|
+
return "null" if d==""
|
33
|
+
return "null" if d==false
|
34
|
+
end
|
35
|
+
d.to_s
|
23
36
|
},
|
24
|
-
decimal:->(d, format ){
|
37
|
+
decimal:->( d, format ){
|
38
|
+
if format == :yml
|
39
|
+
return "null" if d.nil?
|
40
|
+
end
|
41
|
+
return 0 if d==""
|
42
|
+
return 0 if d==false
|
25
43
|
d.to_i
|
26
44
|
},
|
27
45
|
float:->(d, format){
|
46
|
+
if format == :yml
|
47
|
+
return "null" if d.nil?
|
48
|
+
end
|
49
|
+
return 0 if d==""
|
50
|
+
return 0 if d==false
|
28
51
|
d.to_f
|
29
52
|
},
|
30
|
-
integer:->(d, format){
|
53
|
+
integer:->( d, format){
|
54
|
+
if format == :yml
|
55
|
+
return "null" if d.nil?
|
56
|
+
end
|
57
|
+
return 0 if d==""
|
58
|
+
return 0 if d==false
|
31
59
|
d.to_i
|
32
60
|
},
|
33
|
-
string:->(s, format ){
|
61
|
+
string:->( s, format ){
|
34
62
|
if format == :yml
|
35
|
-
return "null"
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
63
|
+
return "null" if s.nil?
|
64
|
+
if s.kind_of?(String)
|
65
|
+
s = s.gsub(/\t/," ") if s["\t"]
|
66
|
+
s = s.sub(/ +/, "") if s[0]==' '
|
67
|
+
s = s.gsub(/\r\n/,"\n").gsub(/\r/,"\n") # 改行方法統一
|
68
|
+
s = "|-\n " + s.gsub(/\n/,"\n ") if s["\n"]
|
69
|
+
end
|
40
70
|
end
|
41
|
-
if format == :
|
71
|
+
if format == :csv
|
42
72
|
return nil if s.nil? # nil は空白文字
|
43
73
|
s = s.to_s
|
74
|
+
s = s.gsub(/\r\n/,"\n").gsub(/\r/,"\n")
|
44
75
|
end
|
45
76
|
s
|
46
77
|
},
|
47
|
-
text:->(s, format){
|
78
|
+
text:->( s, format ){
|
48
79
|
if format == :yml
|
49
|
-
return "null"
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
80
|
+
return "null" if s.nil?
|
81
|
+
if s.kind_of?(String)
|
82
|
+
s = s.gsub(/\t/," ") if s["\t"]
|
83
|
+
s = s.sub(/ +/, "") if s[0]==' '
|
84
|
+
s = s.gsub(/\r\n/,"\n").gsub(/\r/,"\n") # 改行方法統一
|
85
|
+
s = "|-\n " + s.gsub(/\n/,"\n ") if s["\n"]
|
86
|
+
end
|
54
87
|
end
|
55
88
|
if format == :csv
|
56
89
|
return nil if s.nil? # nil は空白文字
|
57
90
|
s = s.to_s
|
91
|
+
s = s.gsub(/\r\n/,"\n").gsub(/\r/,"\n")
|
58
92
|
end
|
59
93
|
s
|
60
94
|
},
|
61
|
-
time:->(d, format ){
|
95
|
+
time:->( d, format ){
|
62
96
|
if format == :yml
|
63
97
|
return "null" if d.nil?
|
98
|
+
return "null" if d==""
|
99
|
+
return "null" if d==false
|
64
100
|
end
|
65
|
-
|
101
|
+
d.to_s
|
66
102
|
},
|
67
|
-
timestamp:->(d, format ){
|
103
|
+
timestamp:->( d, format ){
|
68
104
|
if format == :yml
|
69
105
|
return "null" if d.nil?
|
106
|
+
return "null" if d==""
|
107
|
+
return "null" if d==false
|
70
108
|
end
|
71
|
-
|
109
|
+
d.to_s
|
72
110
|
},
|
73
111
|
}
|
74
112
|
|
@@ -30,17 +30,53 @@ module Flextures
|
|
30
30
|
|
31
31
|
# 型の変換を行う
|
32
32
|
TRANSLATER = {
|
33
|
-
binary:->(d){
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
33
|
+
binary:->(d){
|
34
|
+
d.to_i
|
35
|
+
},
|
36
|
+
boolean:->(d){
|
37
|
+
return d if d.nil?
|
38
|
+
(0==d || ""==d || !d) ? false : true
|
39
|
+
},
|
40
|
+
date:->(d){
|
41
|
+
return d if d.nil?
|
42
|
+
return nil if d==""
|
43
|
+
Date.parse(d.to_s)
|
44
|
+
},
|
45
|
+
datetime:->(d){
|
46
|
+
return d if d.nil?
|
47
|
+
return nil if d==""
|
48
|
+
DateTime.parse(d.to_s)
|
49
|
+
},
|
50
|
+
decimal:->(d){
|
51
|
+
return d if d.nil?
|
52
|
+
d.to_i
|
53
|
+
},
|
54
|
+
float:->(d){
|
55
|
+
return d if d.nil?
|
56
|
+
d.to_f
|
57
|
+
},
|
58
|
+
integer:->(d){
|
59
|
+
return d if d.nil?
|
60
|
+
d.to_i
|
61
|
+
},
|
62
|
+
string:->(d){
|
63
|
+
return d if d.nil?
|
64
|
+
d.to_s
|
65
|
+
},
|
66
|
+
text:->(d){
|
67
|
+
return d if d.nil?
|
68
|
+
d.to_s
|
69
|
+
},
|
70
|
+
time:->(d){
|
71
|
+
return d if d.nil?
|
72
|
+
return nil if d==""
|
73
|
+
DateTime.parse(d.to_s)
|
74
|
+
},
|
75
|
+
timestamp:->(d){
|
76
|
+
return d if d.nil?
|
77
|
+
return nil if d==""
|
78
|
+
DateTime.parse(d.to_s)
|
79
|
+
},
|
44
80
|
}
|
45
81
|
|
46
82
|
# csv 優先で存在している fixtures をロード
|
@@ -78,7 +114,7 @@ module Flextures
|
|
78
114
|
inpfile = "#{dir_name}#{file_name}.csv"
|
79
115
|
klass = PARENT::create_model table_name
|
80
116
|
attributes = klass.columns.map &:name
|
81
|
-
filter = create_filter klass, Factory[table_name],
|
117
|
+
filter = create_filter klass, Factory[table_name], file_name, :csv
|
82
118
|
klass.delete_all
|
83
119
|
CSV.open( inpfile ) do |csv|
|
84
120
|
keys = csv.shift # keyの設定
|
@@ -14,9 +14,7 @@ module RSpec
|
|
14
14
|
module FlextureSupport
|
15
15
|
@@configs={ load_count: 0 }
|
16
16
|
def self.included(m)
|
17
|
-
|
18
|
-
#m.after { Flextures::init_tables } if @@configs[:load_count]==0
|
19
|
-
@@configs[:load_count] += 1
|
17
|
+
Flextures::init_tables
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -29,21 +27,15 @@ end
|
|
29
27
|
# 既存のsetup_fixturesの機能を上書きする必要があったのでこちらを作成
|
30
28
|
module ActiveRecord
|
31
29
|
module TestFixtures
|
32
|
-
|
33
|
-
|
34
|
-
alias :flextures_backup_setup_fixtures :setup_fixtures
|
30
|
+
alias :setup_fixtures_bkup :setup_fixtures
|
35
31
|
def setup_fixtures
|
36
32
|
Flextures::init_load
|
37
|
-
|
38
|
-
@@flextures_config[:count] += 1
|
39
|
-
|
40
|
-
flextures_backup_setup_fixtures
|
33
|
+
setup_fixtures_bkup
|
41
34
|
end
|
42
35
|
|
43
|
-
alias :
|
36
|
+
alias :teardown_fixtures_bkup :teardown_fixtures
|
44
37
|
def teardown_fixtures
|
45
|
-
|
46
|
-
flextures_backup_teardown_fixtures
|
38
|
+
teardown_fixtures_bkup
|
47
39
|
end
|
48
40
|
end
|
49
41
|
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
|
+
version: 1.9.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -89,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
segments:
|
91
91
|
- 0
|
92
|
-
hash:
|
92
|
+
hash: 294980813
|
93
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|