module ComfortableMexicanSofa::Fixture class Importer attr_accessor :site, :path, :from, :to, :fixture_ids, :force_import def initialize(from, to = from, force_import = false) self.from = from self.to = to self.site = Comfy::Cms::Site.where(:identifier => to).first! self.fixture_ids = [] self.force_import = force_import dir = self.class.name.split('::')[2].downcase.pluralize self.path = ::File.join(ComfortableMexicanSofa.config.fixtures_path, from, dir, '/') end def fresh_fixture?(object, file_path) object.new_record? || self.force_import || ::File.mtime(file_path) > object.updated_at end def get_attributes(file_path) YAML.load_file(file_path) || { } end def save_categorizations!(object, categories) object.categorizations.delete_all [categories].flatten.compact.each do |label| category = self.site.categories.where( :label => label, :categorized_type => object.class.to_s ).first next unless category category.categorizations.create!(:categorized => object) end end def import! ComfortableMexicanSofa::Fixture::Category::Importer.new(from, to, force_import).import! ComfortableMexicanSofa::Fixture::Layout::Importer.new( from, to, force_import).import! ComfortableMexicanSofa::Fixture::Page::Importer.new( from, to, force_import).import! ComfortableMexicanSofa::Fixture::Snippet::Importer.new( from, to, force_import).import! ComfortableMexicanSofa::Fixture::File::Importer.new( from, to, force_import).import! end end class Exporter attr_accessor :site, :path, :from, :to def initialize(from, to = from) self.from = from self.to = to self.site = Comfy::Cms::Site.where(:identifier => from).first! dir = self.class.name.split('::')[2].downcase.pluralize self.path = ::File.join(ComfortableMexicanSofa.config.fixtures_path, to, dir) end def prepare_folder!(path) FileUtils.rm_rf(path) FileUtils.mkdir_p(path) end def export! ComfortableMexicanSofa::Fixture::File::Exporter.new( from, to).export! ComfortableMexicanSofa::Fixture::Category::Exporter.new(from, to).export! ComfortableMexicanSofa::Fixture::Layout::Exporter.new( from, to).export! ComfortableMexicanSofa::Fixture::Page::Exporter.new( from, to).export! ComfortableMexicanSofa::Fixture::Snippet::Exporter.new( from, to).export! end end end