flextures 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem "activerecord"
4
+
3
5
  group :development, :test do
4
6
  gem "bundler", "1.2.0"
5
7
  gem "jeweler", "1.8.3"
data/Gemfile.lock CHANGED
@@ -1,9 +1,19 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activemodel (3.2.8)
5
+ activesupport (= 3.2.8)
6
+ builder (~> 3.0.0)
7
+ activerecord (3.2.8)
8
+ activemodel (= 3.2.8)
9
+ activesupport (= 3.2.8)
10
+ arel (~> 3.0.2)
11
+ tzinfo (~> 0.3.29)
4
12
  activesupport (3.2.8)
5
13
  i18n (~> 0.6)
6
14
  multi_json (~> 1.0)
15
+ arel (3.0.2)
16
+ builder (3.0.3)
7
17
  git (1.2.5)
8
18
  i18n (0.6.0)
9
19
  jeweler (1.8.3)
@@ -22,11 +32,13 @@ GEM
22
32
  shoulda-context (1.0.0)
23
33
  shoulda-matchers (1.2.0)
24
34
  activesupport (>= 3.0.0)
35
+ tzinfo (0.3.33)
25
36
 
26
37
  PLATFORMS
27
38
  ruby
28
39
 
29
40
  DEPENDENCIES
41
+ activerecord
30
42
  bundler (= 1.2.0)
31
43
  jeweler (= 1.8.3)
32
44
  shoulda
data/README.ja.rdoc CHANGED
@@ -55,7 +55,7 @@ Usersモデルのfixture(users.csvか users.yml)をロードする
55
55
  MODEL : モデル名を指定してロード。モデル名はカンマ区切りで複数指定が可能
56
56
  DIR : フィクスチャをロード&ダンプするディレクトリを指定する
57
57
  FIXTURES : ロード、ダンプをするファイル名をRails標準以外のもので直接指定(Userモデルのusers.csv以外を指定)
58
- FORMAT : yml,yaml 等の文字列を指定するとロード、ダンプをするフォーマットを変更できる(ymlload,ymldumpと同じ)
58
+ FILE : ロード、ダンプをするファイル名をRails標準以外のもので直接指定(Userモデルのusers.csv以外を指定)
59
59
  T : TABLEのエイリアス
60
60
  M : モデル名指定のエイリアス
61
61
  D : ディレクトリ指定のエイリアス
data/README.rdoc CHANGED
@@ -56,7 +56,7 @@ Other options...
56
56
  MODEL : set model name
57
57
  DIR : set directory name
58
58
  FIXTURES : set fixture file name
59
- FORMAT : dumping format change csv to yaml (aka. ymlload, ymldump command)
59
+ FILE : set fixture file name
60
60
  T : alias TABLE option
61
61
  M : alias MODEL option
62
62
  D : alias DIR option
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.3
1
+ 2.0.4
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 = "2.0.3"
8
+ s.version = "2.0.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 = "2012-09-23"
12
+ s.date = "2012-10-03"
13
13
  s.description = "load and dump fixtures"
14
14
  s.email = "babanba.n@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -60,13 +60,16 @@ Gem::Specification.new do |s|
60
60
  s.specification_version = 3
61
61
 
62
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
+ s.add_runtime_dependency(%q<activerecord>, [">= 0"])
63
64
  s.add_development_dependency(%q<bundler>, ["= 1.2.0"])
64
65
  s.add_development_dependency(%q<jeweler>, ["= 1.8.3"])
65
66
  else
67
+ s.add_dependency(%q<activerecord>, [">= 0"])
66
68
  s.add_dependency(%q<bundler>, ["= 1.2.0"])
67
69
  s.add_dependency(%q<jeweler>, ["= 1.8.3"])
68
70
  end
69
71
  else
72
+ s.add_dependency(%q<activerecord>, [">= 0"])
70
73
  s.add_dependency(%q<bundler>, ["= 1.2.0"])
71
74
  s.add_dependency(%q<jeweler>, ["= 1.8.3"])
72
75
  end
@@ -89,7 +89,7 @@ module Flextures
89
89
  end
90
90
  end
91
91
 
92
- # 引数解析
92
+ # parse arguments functions
93
93
  module ARGS
94
94
  # 書き出し 、読み込み すべきファイルとオプションを書きだす
95
95
  def self.parse option={}
@@ -104,9 +104,9 @@ module Flextures
104
104
  end
105
105
  end
106
106
 
107
- table_names = Flextures::deletable_tables.map{ |table| { table: table } } if table_names.empty?
107
+ table_names = Flextures::deletable_tables.map{ |name| { table: name, file: name } } if table_names.empty?
108
108
 
109
- # ENV["FIXTURES"]の中身を解析
109
+ # parse ENV["FIXTURES"] paameter
110
110
  fixtures_args_parser =->(s){
111
111
  names = s.split(',')
112
112
  if ENV["TABLE"] or ENV["T"] or ENV["MODEL"] or ENV["M"]
@@ -115,7 +115,7 @@ module Flextures
115
115
  names.map{ |name| { table: name, file: name } }
116
116
  end
117
117
  }
118
- # ファイル名を調整
118
+ # parse filename define parameters
119
119
  table_names = fixtures_args_parser.call ENV["FIXTURES"] if ENV["FIXTURES"]
120
120
  table_names = fixtures_args_parser.call ENV["FILE"] if ENV["FILE"]
121
121
  table_names = fixtures_args_parser.call ENV["F"] if ENV["F"]
@@ -127,7 +127,7 @@ module Flextures
127
127
  table_names
128
128
  end
129
129
 
130
- # 存在しているファイルで絞り込む
130
+ # check exist filename block
131
131
  def self.exist
132
132
  return->(name){ File.exists?("#{LOAD_DIR}#{name}.csv") or File.exists?("#{LOAD_DIR}#{name}.yml") }
133
133
  end
@@ -120,11 +120,12 @@ module Flextures
120
120
  fixtures = Flextures::deletable_tables if fixtures.size== 1 and :all == fixtures.first
121
121
 
122
122
  last_hash = {}
123
- last_hash = fixtures.pop if fixtures.last.is_a? Hash # ハッシュ取り出し
123
+ last_hash = fixtures.pop if fixtures.last.is_a? Hash
124
124
 
125
125
  load_hash = fixtures.inject({}){ |h,name| h[name.to_sym] = name; h }
126
126
  load_hash.merge!(last_hash)
127
- load_hash.map { |k,v| { table: k, file: v, loader: :fun } }
127
+ load_hash = load_hash.map { |k,v| { table: k, file: v, loader: :fun } }
128
+ [load_hash, options]
128
129
  end
129
130
 
130
131
  # fixturesをまとめてロード、主にテストtest/unit, rspec で使用する
@@ -138,11 +139,12 @@ module Flextures
138
139
  #
139
140
  # @params [Hash] 読み込むテーブルとファイル名のペア
140
141
  def self.flextures *fixtures
141
- parse_flextures_options(*fixtures).each{ |option| Loader::load option }
142
+ loas_hash, options = parse_flextures_options(*fixtures)
143
+ load_hash.each{ |params| Loader::load params }
142
144
  end
143
145
 
144
146
  # csv 優先で存在している fixtures をロード
145
- def self.load format
147
+ def self.load format, option
146
148
  table_name, file_name, method = file_exist format
147
149
  if method
148
150
  send(method, format)
@@ -153,9 +155,11 @@ module Flextures
153
155
  end
154
156
 
155
157
  # CSVのデータをロードする
156
- def self.csv format
158
+ def self.csv format, options={}
157
159
  table_name, file_name, ext = file_exist format, [:csv]
158
160
 
161
+ # キャッシュ利用可能ならそれをそのまま使う
162
+ return if options[:cache] and @@table_cache[table_name.to_sym] and @@table_cache[table_name.to_sym] == file_name
159
163
  @@table_cache[table_name.to_sym] = file_name
160
164
 
161
165
  print "try loading #{file_name}.csv\n" unless [:fun].include? format[:loader]
@@ -166,6 +170,7 @@ module Flextures
166
170
  filter = create_filter klass, LoadFilter[table_name], file_name, :csv
167
171
  # rails3_acts_as_paranoid がdelete_allで物理削除しないことの対策
168
172
  klass.send( klass.respond_to?(:delete_all!) ? :delete_all! : :delete_all )
173
+
169
174
  CSV.open( "#{file_name}.csv" ) do |csv|
170
175
  keys = csv.shift # keyの設定
171
176
  warning "CSV", attributes, keys
@@ -179,9 +184,11 @@ module Flextures
179
184
  end
180
185
 
181
186
  # YAML形式でデータをロードする
182
- def self.yml format
187
+ def self.yml format, option={}
183
188
  table_name, file_name, ext = file_exist format, [:yml]
184
189
 
190
+ # キャッシュ利用可能ならそれをそのまま使う
191
+ return if options[:cache] and @@table_cache[table_name.to_sym] and @@table_cache[table_name.to_sym] == file_name
185
192
  @@table_cache[table_name.to_sym] = file_name
186
193
 
187
194
  print "try loading #{file_name}.yml\n" unless [:fun].include? format[:loader]
@@ -1,4 +1,4 @@
1
1
  module Flextures
2
- VERSION="2.0.3"
2
+ VERSION="2.0.4"
3
3
  end
4
4
 
data/lib/flextures.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'flextures/version'
3
4
  require 'flextures/flextures_base_config'
4
5
  require 'flextures/flextures_extension_modules'
5
6
  require 'flextures/flextures'
@@ -5,7 +5,7 @@ class FlexturesHookTest < Test::Unit::TestCase
5
5
  context ".parse_flextures_options" do
6
6
  context "通常動作" do
7
7
  setup do
8
- @ret = Flextures::Loader.parse_flextures_options(:users)
8
+ @ret, @options = Flextures::Loader.parse_flextures_options(:users)
9
9
  end
10
10
  should "指定したテーブル分だけハッシュが返されている" do
11
11
  assert_equal 1, @ret.size
@@ -17,7 +17,7 @@ class FlexturesHookTest < Test::Unit::TestCase
17
17
  end
18
18
  context "違うファイルをロードした時" do
19
19
  setup do
20
- @ret = Flextures::Loader.parse_flextures_options( :users => :users_another3 )
20
+ @ret, @options = Flextures::Loader.parse_flextures_options( :users => :users_another3 )
21
21
  end
22
22
  should "指定したテーブル分だけハッシュが返されている" do
23
23
  assert_equal 1, @ret.size
@@ -27,8 +27,15 @@ class FlexturesHookTest < Test::Unit::TestCase
27
27
  assert_equal h, @ret.first
28
28
  end
29
29
  end
30
+ context "オプション指定があった時" do
31
+ setup do
32
+ @ret, @options = Flextures::Loader.parse_flextures_options({ cache: true }, :users)
33
+ end
34
+ should "オプションを取り出している" do
35
+ assert_equal true, @options[:cache]
36
+ end
37
+ end
30
38
  end
31
-
32
39
  end
33
40
  end
34
41
 
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: 2.0.3
4
+ version: 2.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-23 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: bundler
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
114
  version: '0'
99
115
  segments:
100
116
  - 0
101
- hash: -159357549
117
+ hash: -204193459
102
118
  required_rubygems_version: !ruby/object:Gem::Requirement
103
119
  none: false
104
120
  requirements: