Class: Blacklight::Assets

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

Instance Method Summary collapse

Instance Method Details

#add_javascript_dependenciesObject

This could be skipped if you want to use webpacker



9
10
11
12
# File 'lib/generators/blacklight/assets_generator.rb', line 9

def add_javascript_dependencies
  gem 'bootstrap', options[:'bootstrap-version']
  gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
end

#appease_rails7Object



14
15
16
17
18
19
20
# File 'lib/generators/blacklight/assets_generator.rb', line 14

def appease_rails7
  return unless Rails.version > '7'

  gem "sassc-rails", "~> 2.1"

  remove_file 'app/javascript/application.js'
end

#appease_sprockets4Object

Remove the empty generated app/assets/images directory. Without doing this, the default Sprockets 4 manifest will raise an exception.



39
40
41
42
43
44
# File 'lib/generators/blacklight/assets_generator.rb', line 39

def appease_sprockets4
  return if !defined?(Sprockets::VERSION) || Sprockets::VERSION < '4'

  append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
  empty_directory 'app/assets/images'
end

#assetsObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/generators/blacklight/assets_generator.rb', line 46

def assets
  copy_file "blacklight.scss", "app/assets/stylesheets/blacklight.scss"

  # Ensure this method is idempotent
  return if has_blacklight_assets?

  gem 'jquery-rails'
  contents = "\n//\n// Required by Blacklight\n"
  contents += "//= require popper\n"
  contents += "// Twitter Typeahead for autocomplete\n"
  contents += "//= require twitter/typeahead\n"
  contents += "//= require bootstrap\n"
  contents += "//= require blacklight/blacklight\n"

  marker = if turbolinks?
             '//= require turbolinks'
           else
             '//= require rails-ujs'
           end

  insert_into_file "app/assets/javascripts/application.js", after: marker do
    contents
  end

  insert_into_file "app/assets/javascripts/application.js", before: '//= require rails-ujs' do
    "//= require jquery3\n"
  end
end

#create_sprockets_javascriptObject

Add sprockets javascript if needed



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/generators/blacklight/assets_generator.rb', line 23

def create_sprockets_javascript
  # Rails 5 already has an application.js file
  return if Rails.version < '6'

  create_file 'app/assets/javascripts/application.js' do
    <<~CONTENT
      //= require jquery3
      //= require rails-ujs
      #{'//= require turbolinks' if Rails.version < '7'}
    CONTENT
  end
end