Class: HotGlue::DirectUploadInstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/hot_glue/direct_upload_install_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ DirectUploadInstallGenerator

:nodoc:



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
42
43
# File 'lib/generators/hot_glue/direct_upload_install_generator.rb', line 12

def initialize(*args) #:nodoc:
  super

  if Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }.group_by{ |g| g.name }['importmap-rails'] # impomrtmaps

    file_contents = File.read("#{filepath_prefix}app/javascript/application.js")

    if !file_contents.include?("//= require activestorage")
      file_contents << "//= require activestorage"
      File.write("#{filepath_prefix}app/javascript/application.js", file_contents)
      puts "  HOTGLUE --> added to #{filepath_prefix}app/javascript/application.js: `//= require activestorage"
    else
      puts "  HOTGLUE --> #{filepath_prefix}app/javascript/application.js already contains `//= require activestorage`"
    end

  elsif Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }.group_by{ |g| g.name }['jsbundling-rails']
    file_contents = File.read("#{filepath_prefix}app/javascript/application.js")

    if !file_contents.include?("ActiveStorage.start()")
      file_contents << "import * as ActiveStorage from \"@rails/activestorage\"
ActiveStorage.start()"
      File.write("#{filepath_prefix}app/javascript/application.js", file_contents)
      puts "  HOTGLUE --> added to #{filepath_prefix}app/javascript/application.js: `ActiveStorage.start()"
    else
      puts "  HOTGLUE --> #{filepath_prefix}app/javascript/application.js already contains `ActiveStorage.start()`"
    end


  else
    puts "  HOTGLUE --> could not detect either importmap-rails or jsbundling-rails app"
  end
end

Instance Method Details

#filepath_prefixObject



7
8
9
10
# File 'lib/generators/hot_glue/direct_upload_install_generator.rb', line 7

def filepath_prefix
  # todo: inject the context
  'spec/dummy/' if $INTERNAL_SPECS
end