lib/flextures/flextures.rb in flextures-1.9.8 vs lib/flextures/flextures.rb in flextures-1.9.9
- old
+ new
@@ -41,32 +41,44 @@
"#{Rails.root.to_path}/config/flextures.factory.rb",
].each { |fn| load(fn) if File.exist?(fn) }
end
end
- # テーブル情報の初期化
- def self.init_tables(ignore_tables=[])
+ # 前テーブル削除のときにほんとうに消去して良いテーブル一覧を返す
+ def self.deletable_tables
tables = ActiveRecord::Base.connection.tables
tables.delete "schema_migrations"
- tables.delete ignore_tables
+ tables
+ end
+
+ # テーブル情報の初期化
+ def self.init_tables
+ tables = Flextures::deletable_tables
tables.each do |name|
# テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
begin
- klass = Class.new(ActiveRecord::Base){ |o| o.table_name= name }
- klass.delete_all
+ Class.new(ActiveRecord::Base){ |o| o.table_name= name }.delete_all
rescue => e
- p :init_table_error
- p klass.table_name
end
end
end
+ # テーブル情報の初期化
+ def self.delete_tables *tables
+ tables.each do |name|
+ # テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
+ begin
+ Class.new(ActiveRecord::Base){ |o| o.table_name= name }.delete_all
+ rescue => e
+ end
+ end
+ end
+
# デバッグ用のメソッド、渡されたブロックを実行する
# 主にテーブルの今の中身を覗きたい時に使う
def self.table_tap &dumper
- tables = ActiveRecord::Base.connection.tables
- tables.delete "schema_migrations"
+ tables = Flextures::deletable_tables
tables.each do |name|
# テーブルではなくviewを拾って止まる場合があるのでrescueしてしまう
begin
klass = Class.new(ActiveRecord::Base){ |o| o.table_name= name; }
dumper.call klass
@@ -85,11 +97,11 @@
end
if ENV["M"] or ENV["MODEL"]
table_names = (ENV["M"] or ENV["MODEL"]).split(',').map{ |name| { table: name.constantize.table_name } }
end
if table_names.empty?
- table_names = ActiveRecord::Base.connection.tables.map{ |name| { table: name } }
+ table_names = Flextures::deletable_tables.map{ |table| { table: table } }
end
# ENV["FIXTURES"]の中身を解析
fixtures_args_parser =->(s){
names = s.split(',')
( names.size==1 and ENV.values_at("M", "MODEL", "T", "TABLE").first ) ?
@@ -98,10 +110,10 @@
}
table_names = fixtures_args_parser.call ENV["FIXTURES"] if ENV["FIXTURES"]
table_names = fixtures_args_parser.call ENV["F"] if ENV["F"]
table_names = table_names.map{ |option| option.merge dir: ENV["DIR"] } if ENV["DIR"]
# read mode だとcsvもyaml存在しないファイルは返さない
- table_names.select! &exist if option[:mode] && option[:mode].to_sym == :read
+ table_names.select! &exist if option[:mode] && option[:mode] == 'read'
table_names
end
# 存在しているファイルで絞り込む
def self.exist