Class: Perron::Site::Builder::Assets

Inherits:
Object
  • Object
show all
Defined in:
lib/perron/site/builder/assets.rb

Instance Method Summary collapse

Constructor Details

#initializeAssets

Returns a new instance of Assets.



7
8
9
# File 'lib/perron/site/builder/assets.rb', line 7

def initialize
  @output_path = Rails.root.join(Perron.configuration.output)
end

Instance Method Details

#prepareObject



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
# File 'lib/perron/site/builder/assets.rb', line 11

def prepare
  puts "📦 Precompiling and copying assets…"

  success = system("bundle exec rails assets:precompile", out: File::NULL)

  unless success
    puts "❌ ERROR: Asset precompilation failed"

    exit(1)
  end

  source = Rails.root.join("public", "assets")
  destination = @output_path.join("assets")

  unless Dir.exist?(source)
    puts "⚠️ WARNING: No assets found in `#{source}` to copy"

    return
  end

  FileUtils.mkdir_p(destination)
  FileUtils.move(Dir.glob("#{source}/*"), destination, force: true)
  FileUtils.remove_dir(source)

  puts "   Copied assets to `#{destination.relative_path_from(Rails.root)}`"

  prune_excluded_assets from: destination
end