flextures 3.1.3 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -1
- data/Gemfile.lock +17 -13
- data/README.ja.md +15 -13
- data/README.md +9 -8
- data/Rakefile +5 -0
- data/flextures.gemspec +3 -1
- data/lib/flextures.rb +0 -3
- data/lib/flextures/flextures.rake +1 -42
- data/lib/flextures/flextures.rb +4 -7
- data/lib/flextures/flextures_base_config.rb +17 -28
- data/lib/flextures/flextures_command.rb +3 -5
- data/lib/flextures/flextures_dumper.rb +27 -29
- data/lib/flextures/flextures_extension_modules.rb +1 -14
- data/lib/flextures/flextures_factory.rb +3 -5
- data/lib/flextures/flextures_loader.rb +49 -51
- data/lib/flextures/flextures_railtie.rb +0 -2
- data/lib/flextures/rspec_flextures_support.rb +125 -71
- data/lib/flextures/version.rb +1 -1
- data/test/models/flextures_test.rb +8 -0
- data/test/test_helper.rb +4 -3
- data/test/unit/flextures_args_test.rb +178 -0
- data/test/unit/flextures_dumper_test.rb +232 -0
- data/test/unit/{test_flextures_extention_modules.rb → flextures_extention_modules_test.rb} +18 -13
- data/test/unit/flextures_hooks_test.rb +111 -0
- data/test/unit/flextures_loader_test.rb +313 -0
- metadata +9 -18
- data/lib/flextures/testunit_flextures_support.rb +0 -43
- data/test/unit/test_flextures.rb +0 -8
- data/test/unit/test_flextures_args.rb +0 -147
- data/test/unit/test_flextures_dumper.rb +0 -187
- data/test/unit/test_flextures_hooks.rb +0 -90
- data/test/unit/test_flextures_loader.rb +0 -271
- data/test/unit/test_simple.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d86570ed0e33aace484782c2ec347b9050ec44e0
|
4
|
+
data.tar.gz: 721141b2188c3276035375feb64d48f822950cf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eaa221bf5422aa3e1b363419c4bb9e9e5a2e873304df89fca19c7a514459392243f6d57b53db8e445d544063d97a3c640205d6e8c04550b8996555d5ef9997c2
|
7
|
+
data.tar.gz: e57e6482831891e07f6596881f931bb7a0242249571211b67ed3889376b1de45c2d7378ba9b63786d1056bcaccda34822e180aeaabd3ecaa1d9e597a4dc8d6ca
|
data/Gemfile
CHANGED
@@ -3,6 +3,11 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in flextures.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
+
gem "minitest", "5.4.0"
|
7
|
+
|
6
8
|
group :test do
|
7
|
-
gem "
|
9
|
+
gem "minitest-line", "0.6.2"
|
10
|
+
gem "minitest-bang", "0.1.1" # let文を使えるようにする
|
11
|
+
gem "minitest-implicit-subject", "1.4.0" # subject関数を追加する
|
12
|
+
gem "minitest-power_assert", "0.0.3" # power assertを有効にする
|
8
13
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
flextures (
|
4
|
+
flextures (4.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
minitest (5.4.0)
|
10
|
+
minitest-bang (0.1.1)
|
11
|
+
minitest (>= 4.7.5, <= 5.4.0)
|
12
|
+
minitest-implicit-subject (1.4.0)
|
13
|
+
minitest
|
14
|
+
minitest-line (0.6.2)
|
15
|
+
minitest (~> 5.0)
|
16
|
+
minitest-power_assert (0.0.3)
|
17
|
+
minitest
|
18
|
+
power_assert
|
19
|
+
power_assert (0.2.2)
|
14
20
|
rake (0.9.2.2)
|
15
|
-
shoulda (3.1.1)
|
16
|
-
shoulda-context (~> 1.0)
|
17
|
-
shoulda-matchers (~> 1.2)
|
18
|
-
shoulda-context (1.0.0)
|
19
|
-
shoulda-matchers (1.2.0)
|
20
|
-
activesupport (>= 3.0.0)
|
21
21
|
|
22
22
|
PLATFORMS
|
23
23
|
ruby
|
@@ -25,8 +25,12 @@ PLATFORMS
|
|
25
25
|
DEPENDENCIES
|
26
26
|
bundler (~> 1.6)
|
27
27
|
flextures!
|
28
|
+
minitest (= 5.4.0)
|
29
|
+
minitest-bang (= 0.1.1)
|
30
|
+
minitest-implicit-subject (= 1.4.0)
|
31
|
+
minitest-line (= 0.6.2)
|
32
|
+
minitest-power_assert (= 0.0.3)
|
28
33
|
rake
|
29
|
-
shoulda
|
30
34
|
|
31
35
|
BUNDLED WITH
|
32
36
|
1.10.6
|
data/README.ja.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# flextures
|
2
2
|
|
3
|
-
* [ENGLISH DOCUMENT](https://github.com/baban/flextures/blob/master/README.
|
3
|
+
* [ENGLISH DOCUMENT](https://github.com/baban/flextures/blob/master/README.md)
|
4
4
|
|
5
5
|
## Abstruct
|
6
6
|
|
@@ -10,8 +10,8 @@ Rails標準のfixtureの不満点を解消するために作成しました
|
|
10
10
|
それぞれfixtureのロードとダンプを行います
|
11
11
|
|
12
12
|
```
|
13
|
-
|
14
|
-
|
13
|
+
rake db:flextures:load
|
14
|
+
rake db:flextures:dump
|
15
15
|
```
|
16
16
|
|
17
17
|
通常のfixtureとの主な違いは次の4点です
|
@@ -28,7 +28,6 @@ gem化されているので、bundlerで次のように記述して、普通にb
|
|
28
28
|
|
29
29
|
```
|
30
30
|
gem "flextures"
|
31
|
-
|
32
31
|
```
|
33
32
|
|
34
33
|
ちなみに開発環境はruby1.9以上のバージョン、rails3以上、もしくはPadrinoを想定しています
|
@@ -94,6 +93,7 @@ fixtureのロード機能を使えます
|
|
94
93
|
```ruby
|
95
94
|
describe ItemShopController do
|
96
95
|
flextures :users, :items
|
96
|
+
end
|
97
97
|
```
|
98
98
|
|
99
99
|
基本的な違いは、yamlよりcsvを優先する、カラムの変更点を検知して警告を出しながらもロードを行う等ですが
|
@@ -103,6 +103,7 @@ describe ItemShopController do
|
|
103
103
|
```ruby
|
104
104
|
describe ItemShopController do
|
105
105
|
flextures :items, :users => :users_for_itmshop # users_for_itemshop.csv をロードする
|
106
|
+
end
|
106
107
|
```
|
107
108
|
|
108
109
|
その他現在はShouldからの呼び出しや様々なオプションを載せていますが
|
@@ -112,8 +113,7 @@ describe ItemShopController do
|
|
112
113
|
|
113
114
|
#### load filer
|
114
115
|
|
115
|
-
Railsのプロジェクトに config/flextures.factory.rb というファイルを作成して、そこにフィルタを記述することによって
|
116
|
-
(Padrinoでも設置場所は同じです)
|
116
|
+
Railsのプロジェクトに `config/flextures.factory.rb` というファイルを作成して、そこにフィルタを記述することによって
|
117
117
|
フィクスチャの読み込み時に、値を加工して読み込む事が可能になっています
|
118
118
|
例えば、次の様に記述するとusersテーブルのlast_login_dateの値を、常に現在の時間として設定できます
|
119
119
|
|
@@ -142,7 +142,8 @@ end
|
|
142
142
|
|
143
143
|
#### dump filer
|
144
144
|
|
145
|
-
データのdump
|
145
|
+
データのdump時に加工が必要になった時には、同じく`config/flextures.factory.rb`に
|
146
|
+
テーブル名と、加工したい値をキーに、処理をラムダで渡してやることで可能です
|
146
147
|
|
147
148
|
```ruby
|
148
149
|
Flextures::DumpFilter.define :users, {
|
@@ -154,14 +155,15 @@ Flextures::DumpFilter.define :users, {
|
|
154
155
|
|
155
156
|
### 設定ファイル
|
156
157
|
|
157
|
-
config/flextures.config.rb で設定ファイルを作成すると、データをロード&ダンプするディレクトリなどの設定を変更できます
|
158
|
+
`config/flextures.config.rb` で設定ファイルを作成すると、データをロード&ダンプするディレクトリなどの設定を変更できます
|
159
|
+
|
160
|
+
|
158
161
|
|
159
162
|
```ruby
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
Config.fixture_dump_directory = "test/fixtures/"
|
163
|
+
Flextures.configure do |config|
|
164
|
+
# Load and dump directory change "spec/fixtures/" to "test/fixtures/"
|
165
|
+
config.load_directory = "test/fixtures/"
|
166
|
+
config.dump_directory = "test/fixtures/"
|
165
167
|
end
|
166
168
|
```
|
167
169
|
|
data/README.md
CHANGED
@@ -101,7 +101,8 @@ Please see [wiki](https://github.com/baban/flextures/wiki/Unittestsupport) ...
|
|
101
101
|
|
102
102
|
#### load filter
|
103
103
|
|
104
|
-
|
104
|
+
In `config/flextures.factory.rb`
|
105
|
+
|
105
106
|
Factory filter translate fixture data and set database.
|
106
107
|
|
107
108
|
For example, this code set current time to last_login_date column.
|
@@ -129,7 +130,9 @@ end
|
|
129
130
|
if you need to convert table data into other data format, you use dump filter.
|
130
131
|
(dump filter is same file as load filter)
|
131
132
|
|
132
|
-
dump filter has hash
|
133
|
+
dump filter has hash arguments, it is formatted colum name key and convert method, proc, lambda value
|
134
|
+
|
135
|
+
file is `config/flextures.factory.rb`
|
133
136
|
|
134
137
|
```ruby
|
135
138
|
Flextures::DumpFilter.define :users, {
|
@@ -141,15 +144,13 @@ Other options please see [wiki](https://github.com/baban/flextures/wiki/Factoryf
|
|
141
144
|
|
142
145
|
### Configuration file
|
143
146
|
|
144
|
-
|
145
|
-
(file is config/flextures.config.rb)
|
147
|
+
In `config/initializers/flextures.rb`, configuration file can change load and dump directory
|
146
148
|
|
147
149
|
```ruby
|
148
|
-
|
149
|
-
module Flextures
|
150
|
+
Flextures.configure do |config|
|
150
151
|
# Load and dump directory change "spec/fixtures/" to "test/fixtures/"
|
151
|
-
|
152
|
-
|
152
|
+
config.load_directory = "test/fixtures/"
|
153
|
+
config.dump_directory = "test/fixtures/"
|
153
154
|
end
|
154
155
|
```
|
155
156
|
|
data/Rakefile
CHANGED
data/flextures.gemspec
CHANGED
@@ -15,9 +15,11 @@ Gem::Specification.new do |spec|
|
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
#spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.test_files = ["test/unit/flextures_args_test.rb"]
|
19
20
|
spec.require_paths = ["lib"]
|
20
21
|
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
23
|
spec.add_development_dependency "rake"
|
24
|
+
#spec.add_development_dependency "minitest", "5.4.0"
|
23
25
|
end
|
data/lib/flextures.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'flextures/version'
|
4
2
|
require 'flextures/flextures_base_config'
|
5
3
|
require 'flextures/flextures_extension_modules'
|
@@ -10,4 +8,3 @@ require 'flextures/flextures_dumper'
|
|
10
8
|
require 'flextures/flextures_command'
|
11
9
|
require 'flextures/flextures_railtie' if defined? Rails
|
12
10
|
require 'flextures/rspec_flextures_support' if defined? RSpec
|
13
|
-
require 'flextures/testunit_flextures_support' if defined? Test::Unit::TestCase
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'flextures/flextures'
|
4
2
|
|
5
3
|
namespace :db do
|
@@ -9,53 +7,14 @@ namespace :db do
|
|
9
7
|
Flextures::Rake::Command::dump
|
10
8
|
end
|
11
9
|
|
12
|
-
desc "Dump data to prefer csv format"
|
13
|
-
task :csvdump => :environment do
|
14
|
-
puts "This command is deprecated"
|
15
|
-
# TODO: deprecated message
|
16
|
-
# please use 'FOAMRT=csv' option
|
17
|
-
ENV["FORMAT"]="csv"
|
18
|
-
Flextures::Rake::Command::dump
|
19
|
-
end
|
20
|
-
|
21
|
-
desc "Dump data to yaml format"
|
22
|
-
task :ymldump => :environment do
|
23
|
-
puts "This command is deprecated"
|
24
|
-
puts "please use 'rake db:flextures:dump FORMAT='yml''"
|
25
|
-
# TODO: deprecated message
|
26
|
-
# please use 'FOAMRT=yml' option
|
27
|
-
ENV["FORMAT"]="yml"
|
28
|
-
Flextures::Rake::Command::dump
|
29
|
-
end
|
30
|
-
|
31
10
|
desc "load fixture data csv format"
|
32
11
|
task :load => :environment do
|
33
12
|
Flextures::Rake::Command::load
|
34
13
|
end
|
35
14
|
|
36
|
-
desc "load fixture data only csv format files"
|
37
|
-
task :csvload => :environment do
|
38
|
-
puts "This command is deprecated"
|
39
|
-
puts "please use 'rake db:flextures:load FORMAT='csv''"
|
40
|
-
# TODO: deprecated message
|
41
|
-
# please use 'FOAMRT=csv' option
|
42
|
-
ENV["FORMAT"]="csv"
|
43
|
-
Flextures::Rake::Command::load
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "load fixture files only yaml format"
|
47
|
-
task :ymlload => :environment do
|
48
|
-
# TODO: deprecated message
|
49
|
-
# please use 'FOAMRT=yml' option
|
50
|
-
ENV["FORMAT"]="yml"
|
51
|
-
puts "This command is deprecated"
|
52
|
-
puts "please use 'rake db:flextures:load FORMAT='yml''"
|
53
|
-
Flextures::Rake::Command::load
|
54
|
-
end
|
55
|
-
|
56
15
|
desc "load and dump file (replace) new data file"
|
57
16
|
task :generate => :environment do
|
58
17
|
Flextures::Rake::Command::generate
|
59
|
-
end
|
18
|
+
end
|
60
19
|
end
|
61
20
|
end
|
data/lib/flextures/flextures.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'ostruct'
|
4
2
|
require 'csv'
|
5
3
|
require "flextures/flextures_base_config"
|
@@ -32,10 +30,9 @@ module Flextures
|
|
32
30
|
end
|
33
31
|
|
34
32
|
# load configuration file, if file is exist
|
35
|
-
def self.
|
33
|
+
def self.load_configurations
|
36
34
|
if defined?(Rails) and Rails.root
|
37
35
|
[
|
38
|
-
File.join( Rails.root.to_path,"/config/flextures.config.rb" ),
|
39
36
|
File.join( Rails.root.to_path,"/config/flextures.factory.rb" ),
|
40
37
|
].each { |fn| File.exist?(fn) && load(fn) }
|
41
38
|
end
|
@@ -44,7 +41,7 @@ module Flextures
|
|
44
41
|
# @return [Array] flextures useable table names
|
45
42
|
def self.deletable_tables
|
46
43
|
tables = ActiveRecord::Base.connection.tables
|
47
|
-
Flextures::
|
44
|
+
Flextures::Configuration.ignore_tables.each { |name| tables.delete( name.to_s ) }
|
48
45
|
tables
|
49
46
|
end
|
50
47
|
|
@@ -133,8 +130,8 @@ module Flextures
|
|
133
130
|
|
134
131
|
# check exist filename block
|
135
132
|
def self.exist
|
136
|
-
return->(name){ File.exists?( File.join(
|
137
|
-
File.exists?( File.join(
|
133
|
+
return->(name){ File.exists?( File.join(Flextures::Configuration.load_directory, "#{name}.csv") ) or
|
134
|
+
File.exists?( File.join(Flextures::Configuration.load_directory, "#{name}.yml") ) }
|
138
135
|
end
|
139
136
|
end
|
140
137
|
end
|
@@ -1,33 +1,22 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
# base configurations
|
4
|
-
# if you want to change setting, create 'config/flextures.config.rb', and overwrite setting
|
5
|
-
#
|
6
|
-
# example:
|
7
|
-
# module Flextures
|
8
|
-
# # load and dump directroy setting change "spec/fixtures/" to "test/fixtures/"
|
9
|
-
# Config.fixture_load_directory = "test/fixtures/"
|
10
|
-
# Config.fixture_dump_directory = "test/fixtures/"
|
11
|
-
# end
|
12
|
-
#
|
13
2
|
module Flextures
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
3
|
+
class Configuration
|
4
|
+
include ActiveSupport::Configurable
|
5
|
+
|
6
|
+
config_accessor :ignore_tables do
|
7
|
+
["schema_migrations"]
|
8
|
+
end
|
9
|
+
|
10
|
+
config_accessor :load_directory do
|
11
|
+
"spec/fixtures/"
|
12
|
+
end
|
13
|
+
|
14
|
+
config_accessor :dump_directory do
|
15
|
+
"spec/fixtures/"
|
16
|
+
end
|
17
|
+
|
18
|
+
config_accessor :init_all_tables do
|
19
|
+
true
|
31
20
|
end
|
32
21
|
end
|
33
22
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'ostruct'
|
4
2
|
require 'csv'
|
5
3
|
|
@@ -12,7 +10,7 @@ module Flextures
|
|
12
10
|
module Rake
|
13
11
|
module Command
|
14
12
|
def self.dump
|
15
|
-
Flextures::
|
13
|
+
Flextures::load_configurations
|
16
14
|
table_names = Flextures::ARGS.parse
|
17
15
|
puts "dumping..."
|
18
16
|
case ENV["FORMAT"].to_s.to_sym
|
@@ -26,7 +24,7 @@ module Flextures
|
|
26
24
|
end
|
27
25
|
|
28
26
|
def self.load
|
29
|
-
Flextures::
|
27
|
+
Flextures::load_configurations
|
30
28
|
table_names = Flextures::ARGS.parse
|
31
29
|
Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
|
32
30
|
file_format = ENV["FORMAT"]
|
@@ -43,7 +41,7 @@ module Flextures
|
|
43
41
|
|
44
42
|
# load and dump data
|
45
43
|
def self.generate
|
46
|
-
Flextures::
|
44
|
+
Flextures::load_configurations
|
47
45
|
table_names = Flextures::ARGS.parse
|
48
46
|
Flextures::init_tables unless ENV["T"] or ENV["TABLE"] or ENV["M"] or ENV["MODEL"] or ENV["F"] or ENV["FIXTUES"]
|
49
47
|
file_format = ENV["FORMAT"]
|
@@ -1,30 +1,28 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require "fileutils"
|
4
2
|
|
5
3
|
module Flextures
|
6
4
|
# defined data dump methods
|
7
5
|
module Dumper
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
module ProcEx
|
7
|
+
refine Proc do
|
8
|
+
# compose function
|
9
|
+
def *(other)
|
10
|
+
if self.lambda? and other.lambda?
|
11
|
+
lambda { |*x| other.call(self.call(*x)) }
|
12
|
+
elsif not self.lambda? and not other.lambda?
|
13
|
+
Proc.new {|*x| other.call(self.call(*x)) }
|
14
|
+
else
|
15
|
+
raise ArgumentError, "lambda/Proc type mismatch"
|
16
|
+
end
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
20
|
+
using ProcEx
|
21
21
|
|
22
|
-
|
23
|
-
Proc.new(&b)
|
24
|
-
end
|
22
|
+
PARENT = Flextures
|
25
23
|
|
26
24
|
# create data translater
|
27
|
-
def self.translate_creater(
|
25
|
+
def self.translate_creater(val, rules)
|
28
26
|
rule_map = {
|
29
27
|
nullstr: proc { |d|
|
30
28
|
return "null" if d.nil?
|
@@ -102,7 +100,7 @@ module Flextures
|
|
102
100
|
},
|
103
101
|
datetime:->( d, format ){
|
104
102
|
procs = (format == :yml) ?
|
105
|
-
[:nullstr, :blank2null, :false2nullstr, proc { |d| d.to_s }] :
|
103
|
+
[:nullstr, :blank2null, :false2nullstr, proc { |d| d.try(:strftime,"%F %T").to_s }] :
|
106
104
|
[proc { |d| d.to_s }]
|
107
105
|
self.translate_creater d, procs
|
108
106
|
},
|
@@ -138,7 +136,7 @@ module Flextures
|
|
138
136
|
},
|
139
137
|
time:->( d, format ){
|
140
138
|
procs = (format == :yml) ?
|
141
|
-
[:ymlnulltime, proc { |d| d.to_s }] :
|
139
|
+
[:ymlnulltime, proc { |d| d.try(:strftime,"%F %T").to_s }] :
|
142
140
|
[proc { |d| d.to_s }]
|
143
141
|
self.translate_creater d, procs
|
144
142
|
},
|
@@ -159,9 +157,9 @@ module Flextures
|
|
159
157
|
# @params [Symbol] type datatype
|
160
158
|
# @params [Symbol] format data type (:yml or :csv)
|
161
159
|
# @return translated value
|
162
|
-
def self.trans(
|
160
|
+
def self.trans(v, type, format)
|
163
161
|
trans = TRANSLATER[type]
|
164
|
-
return trans.call(
|
162
|
+
return trans.call(v, format) if trans
|
165
163
|
v
|
166
164
|
end
|
167
165
|
|
@@ -169,7 +167,7 @@ module Flextures
|
|
169
167
|
# @params klass dump table Model
|
170
168
|
# @params [Hash] options dump options
|
171
169
|
# @return [Array] columns format information
|
172
|
-
def self.dump_attributes(
|
170
|
+
def self.dump_attributes(klass, options)
|
173
171
|
columns = klass.columns.map { |column| { name: column.name, type: column.type } }
|
174
172
|
# option[:minus] colum is delete columns
|
175
173
|
columns.reject! { |column| options[:minus].include?(column[:name]) } if options[:minus]
|
@@ -185,7 +183,7 @@ module Flextures
|
|
185
183
|
# @params [Hash] options options
|
186
184
|
# @params [Symbol] type format type (:yml or :csv)
|
187
185
|
# @return [Proc] filter function
|
188
|
-
def self.create_filter(
|
186
|
+
def self.create_filter(attr_type, format, type)
|
189
187
|
filter = DumpFilter[format[:table].to_s.to_sym] || {}
|
190
188
|
->(row) {
|
191
189
|
attr_type.map do |h|
|
@@ -198,7 +196,7 @@ module Flextures
|
|
198
196
|
# data dump to csv format
|
199
197
|
# @params [Hash] format file format data
|
200
198
|
# @params [Hash] options dump format options
|
201
|
-
def self.csv(
|
199
|
+
def self.csv(format)
|
202
200
|
klass = PARENT.create_model(format[:table])
|
203
201
|
attr_type = self.dump_attributes klass, format
|
204
202
|
filter = self.create_filter attr_type, format, :csv
|
@@ -206,10 +204,10 @@ module Flextures
|
|
206
204
|
end
|
207
205
|
|
208
206
|
# dump csv format data
|
209
|
-
def self.dump_csv(
|
207
|
+
def self.dump_csv(klass, attr_type, values_filter, format)
|
210
208
|
# TODO: 拡張子は指定してもしなくても良いようにする
|
211
209
|
file_name = format[:file] || format[:table]
|
212
|
-
dir_name = File.join(
|
210
|
+
dir_name = File.join(Flextures::Configuration.dump_directory, format[:dir].to_s)
|
213
211
|
FileUtils.mkdir_p(dir_name)
|
214
212
|
outfile = File.join(dir_name, "#{file_name}.csv")
|
215
213
|
CSV.open(outfile,'w') do |csv|
|
@@ -226,19 +224,19 @@ module Flextures
|
|
226
224
|
# data dump to yaml format
|
227
225
|
# @params [Hash] format file format data
|
228
226
|
# @params [Hash] options dump format options
|
229
|
-
def self.yml(
|
227
|
+
def self.yml(format)
|
230
228
|
klass = PARENT::create_model(format[:table])
|
231
229
|
attr_type = self.dump_attributes klass, format
|
232
230
|
filter = self.create_filter attr_type, format, :yml
|
233
|
-
self.dump_yml(
|
231
|
+
self.dump_yml(klass, filter, format)
|
234
232
|
end
|
235
233
|
|
236
234
|
# dump yml format data
|
237
|
-
def self.dump_yml(
|
235
|
+
def self.dump_yml(klass, values_filter, format)
|
238
236
|
# TODO: 拡張子は指定してもしなくても良いようにする
|
239
237
|
table_name = format[:table]
|
240
238
|
file_name = format[:file] || format[:table]
|
241
|
-
dir_name = File.join(
|
239
|
+
dir_name = File.join(Flextures::Configuration.dump_directory, format[:dir].to_s)
|
242
240
|
FileUtils.mkdir_p(dir_name)
|
243
241
|
outfile = File.join(dir_name, "#{file_name}.yml")
|
244
242
|
File.open(outfile,"w") do |f|
|