Class: YeshuaCrm::AssetsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/yeshua_crm/assets_manager.rb

Class Method Summary collapse

Class Method Details

.install_assetsObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/yeshua_crm/assets_manager.rb', line 3

def self.install_assets
  return unless Gem.loaded_specs['yeshua_crm']
  source = File.join(Gem.loaded_specs['yeshua_crm'].full_gem_path, 'vendor', 'assets')
  destination = File.join(Dir.pwd, 'public', 'plugin_assets', 'yeshua_crm')
  return unless File.directory?(source)

  source_files = Dir[source + '/**/*']
  source_dirs = source_files.select { |d| File.directory?(d) }
  source_files -= source_dirs

  unless source_files.empty?
    base_target_dir = File.join(destination, File.dirname(source_files.first).gsub(source, ''))
    begin
      FileUtils.mkdir_p(base_target_dir)
    rescue Exception => e
      raise "Could not create directory #{base_target_dir}: " + e.message
    end
  end

  source_dirs.each do |dir|
    target_dir = File.join(destination, dir.gsub(source, ''))
    begin
      FileUtils.mkdir_p(target_dir)
    rescue Exception => e
      raise "Could not create directory #{target_dir}: " + e.message
    end
  end

  source_files.each do |file|
    begin
      target = File.join(destination, file.gsub(source, ''))
      unless File.exist?(target) && FileUtils.identical?(file, target)
        FileUtils.cp(file, target)
      end
    rescue Exception => e
      raise "Could not copy #{file} to #{target}: " + e.message
    end
  end
end