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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b662bba9471c429a21431597c9cf7e290c6e5f37
4
- data.tar.gz: 82a85f274b963fb15a2cf7949b74c41622206607
3
+ metadata.gz: d86570ed0e33aace484782c2ec347b9050ec44e0
4
+ data.tar.gz: 721141b2188c3276035375feb64d48f822950cf3
5
5
  SHA512:
6
- metadata.gz: b03024429c88c61ca34421ef1748b15ad2da6e801ffa912fce348c4dea133d15726a5241d81546e8e3102c3a46001739fa92ad4cc549195ef05588a1e35fda67
7
- data.tar.gz: d2c304dfadec3dab3d33a61f33d82c32bcd300bdcafda9796313a9a514d0f7f67605e60abd8bf4810ae696e5862f9ee8438c72135de25f070a28333605bb06f3
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 "shoulda", ">= 0"
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 (3.1.3)
4
+ flextures (4.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- activesupport (3.2.8)
10
- i18n (~> 0.6)
11
- multi_json (~> 1.0)
12
- i18n (0.6.0)
13
- multi_json (1.3.6)
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.rdoc)
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
- rake db:flextures:load
14
- rake db:flextures:dump
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
- # config/flextures.config.rb
161
- module Flextures
162
- # test/fixtures/ のフィクスチャを読み出したい場合は吐き出しディレクトリの値を上書きする
163
- Config.fixture_load_directory = "test/fixtures/"
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
- If you create filter file.(File name is "config/flextures.factory.rb")
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 argumtne, it is formatted colum name key and convert method, proc, lambda value
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
- Configuration file can change load and dump directory
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
- # config/flextures.config.rb
149
- module Flextures
150
+ Flextures.configure do |config|
150
151
  # Load and dump directory change "spec/fixtures/" to "test/fixtures/"
151
- Config.fixture_load_directory = "test/fixtures/"
152
- Config.fixture_dump_directory = "test/fixtures/"
152
+ config.load_directory = "test/fixtures/"
153
+ config.dump_directory = "test/fixtures/"
153
154
  end
154
155
  ```
155
156
 
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = "test/**/*_test.rb"
6
+ end
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
@@ -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.init_load
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::Config.ignore_tables.each { |name| tables.delete( name.to_s ) }
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( Config.fixture_load_directory, "#{name}.csv") ) or
137
- File.exists?( File.join( Config.fixture_load_directory, "#{name}.yml") ) }
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
- module Config
15
- @@read_onlys=[]
16
- @@configs={
17
- use_transactional_fixtures: nil, # override activerecord base "use_transactional_fixtures" option if you set value boolean value
18
- ignore_tables: ["schema_migrations"], # 'ignore_tables' table data is not deleted by flextures delete_all method
19
- fixture_load_directory: "spec/fixtures/", # base load directory
20
- fixture_dump_directory: "spec/fixtures/", # dump load directory
21
- init_all_tables: false, # if this option is 'true', when start unit test, all table data is delete
22
- options: {}, # options(example { unfilter: true })
23
- table_load_order: [], # set load options
24
- }
25
- # hash key change to getter and setter
26
- class<< self
27
- @@configs.each do |setting_key, setting_value|
28
- define_method(setting_key){ @@configs[setting_key] }
29
- define_method("#{setting_key}="){ |arg| @@configs[setting_key]=arg } unless @@read_onlys.include?(setting_key)
30
- end
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::init_load
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::init_load
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::init_load
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
- PARENT = Flextures
9
- # procに機能追加、関数合成のためのメソッドを追加する
10
- class Proc < ::Proc
11
- def *(other)
12
- if self.lambda? and other.lambda?
13
- lambda { |*x| other.call(self.call(*x)) }
14
- elsif not self.lambda? and not other.lambda?
15
- Proc.new {|*x| other.call(self.call(*x)) }
16
- else
17
- raise ArgumentError, "lambda/Proc type mismatch"
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
- def self.proc(&b)
23
- Proc.new(&b)
24
- end
22
+ PARENT = Flextures
25
23
 
26
24
  # create data translater
27
- def self.translate_creater( val, rules )
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( v, type, format )
160
+ def self.trans(v, type, format)
163
161
  trans = TRANSLATER[type]
164
- return trans.call( v, format ) if trans
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( klass, options )
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( attr_type, format, type )
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( format )
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( klass, attr_type, values_filter, format )
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( Flextures::Config.fixture_dump_directory, format[:dir].to_s )
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( format )
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( klass, filter, format )
231
+ self.dump_yml(klass, filter, format)
234
232
  end
235
233
 
236
234
  # dump yml format data
237
- def self.dump_yml( klass, values_filter, format )
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( Flextures::Config.fixture_dump_directory, format[:dir].to_s )
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|