Class: Spotlight::Install

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

Overview

spotlight:install generator

Instance Method Summary collapse

Instance Method Details

#add_controller_mixinObject



87
88
89
90
91
# File 'lib/generators/spotlight/install_generator.rb', line 87

def add_controller_mixin
  inject_into_file 'app/controllers/application_controller.rb', after: 'include Blacklight::Controller' do
    "\n  include Spotlight::Controller\n"
  end
end

#add_example_catalog_controllerObject



130
131
132
# File 'lib/generators/spotlight/install_generator.rb', line 130

def add_example_catalog_controller
  copy_file 'catalog_controller.rb', 'app/controllers/catalog_controller.rb'
end

#add_helperObject



93
94
95
96
97
98
# File 'lib/generators/spotlight/install_generator.rb', line 93

def add_helper
  copy_file 'spotlight_helper.rb', 'app/helpers/spotlight_helper.rb'
  inject_into_file 'app/helpers/application_helper.rb', after: 'module ApplicationHelper' do
    "\n  include SpotlightHelper"
  end
end

#add_js_rails6Object

we’re not (yet) using webpacker, so we need to re-add sprockets functionality



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/generators/spotlight/install_generator.rb', line 14

def add_js_rails6
  return unless Rails.version.to_i == 6

  gem 'coffee-rails', '~> 4.2'
  gem 'uglifier', '>= 1.3.0'

  append_to_file 'app/assets/config/manifest.js', "\n//= link_directory ../javascripts .js\n"
  append_to_file 'app/assets/javascripts/application.js', "\n//= require_tree .\n"
  gsub_file 'app/views/layouts/application.html.erb', /pack/, 'include'
  inject_into_file 'config/environments/production.rb', after: '  # config.assets.css_compressor = :sass' do
    "\n  config.assets.js_compressor = :uglifier"
  end

  # but since webpacker exists in the gemfile, we still need to run the
  # install before rails will start
  run 'bundle exec rails webpacker:install'
end

#add_js_rails7Object



32
33
34
35
36
# File 'lib/generators/spotlight/install_generator.rb', line 32

def add_js_rails7
  return unless Rails.version.to_i == 7

  append_to_file 'app/assets/javascripts/application.js', "\n//= require_tree .\n"
end

#add_mailer_defaultsObject



147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/generators/spotlight/install_generator.rb', line 147

def add_mailer_defaults
  if options[:mailer_default_url_host].present?
    say 'Injecting a placeholder config.action_mailer.default_url_options; be sure to update it for your environment', :yellow
    insert_into_file 'config/application.rb', after: "< Rails::Application\n" do
      <<-EOF
      config.action_mailer.default_url_options = { host: "#{options[:mailer_default_url_host]}", from: "[email protected]" }
      EOF
    end
  else
    say 'Please add a default configuration config.action_mailer.default_url_options for your environment', :red
  end
end

#add_model_mixinObject



100
101
102
103
104
105
106
107
108
# File 'lib/generators/spotlight/install_generator.rb', line 100

def add_model_mixin
  if File.exist? File.expand_path('app/models/solr_document.rb', destination_root)
    inject_into_file 'app/models/solr_document.rb', after: 'include Blacklight::Solr::Document' do
      "\n  include Spotlight::SolrDocument\n"
    end
  else
    say 'Unable to find SolrDocument class; add `include Spotlight::SolrDocument` to the class manually'
  end
end

#add_oembedObject



140
141
142
143
144
145
# File 'lib/generators/spotlight/install_generator.rb', line 140

def add_oembed
  gem 'blacklight-oembed', '~> 1.0'
  bundle_install
  generate 'blacklight_oembed:install'
  copy_file 'config/initializers/oembed.rb'
end

#add_osd_viewerObject



134
135
136
137
138
# File 'lib/generators/spotlight/install_generator.rb', line 134

def add_osd_viewer
  gem 'blacklight-gallery', '~> 4.0'
  bundle_install
  generate 'blacklight_gallery:install'
end

#add_roles_to_userObject



81
82
83
84
85
# File 'lib/generators/spotlight/install_generator.rb', line 81

def add_roles_to_user
  inject_into_file 'app/models/user.rb', after: 'include Blacklight::User' do
    "\n  include Spotlight::User\n"
  end
end

#add_search_builder_mixinObject



120
121
122
123
124
125
126
127
128
# File 'lib/generators/spotlight/install_generator.rb', line 120

def add_search_builder_mixin
  if File.exist? File.expand_path('app/models/search_builder.rb', destination_root)
    inject_into_file 'app/models/search_builder.rb', after: "include Blacklight::Solr::SearchBuilderBehavior\n" do
      "\n  include Spotlight::SearchBuilder\n"
    end
  else
    say 'Unable to find SearchBuilder class; add `include Spotlight::SearchBuilder` to the class manually.'
  end
end

#add_solr_config_resourcesObject



164
165
166
167
# File 'lib/generators/spotlight/install_generator.rb', line 164

def add_solr_config_resources
  copy_file '.solr_wrapper.yml', '.solr_wrapper.yml'
  directory 'solr'
end

#add_solr_indexing_mixinObject



110
111
112
113
114
115
116
117
118
# File 'lib/generators/spotlight/install_generator.rb', line 110

def add_solr_indexing_mixin
  if File.exist? File.expand_path('app/models/solr_document.rb', destination_root)
    inject_into_file 'app/models/solr_document.rb', after: "include Spotlight::SolrDocument\n" do
      "\n  include #{options[:solr_update_class]}\n"
    end
  else
    say "Unable to find SolrDocument class; add `include #{options[:solr_update_class]}` to the class manually"
  end
end

#add_translationsObject



176
177
178
# File 'lib/generators/spotlight/install_generator.rb', line 176

def add_translations
  copy_file 'config/initializers/translation.rb'
end

#assetsObject



76
77
78
79
# File 'lib/generators/spotlight/install_generator.rb', line 76

def assets
  copy_file 'spotlight.scss', 'app/assets/stylesheets/spotlight.scss'
  copy_file 'spotlight.js', 'app/assets/javascripts/spotlight.js'
end

#configure_loggingObject



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/generators/spotlight/install_generator.rb', line 180

def configure_logging
  insert_into_file 'config/application.rb', after: "< Rails::Application\n" do
    <<-EOF
    # Logging
    if ENV["RAILS_LOG_TO_STDOUT"].present?
      config.log_level = :debug
      config.log_formatter = ::Logger::Formatter.new
      # log to stdout
      logger               = ActiveSupport::Logger.new(STDOUT)
      logger.formatter     = config.log_formatter
      config.logger        = ActiveSupport::TaggedLogging.new(logger)
      # Print deprecation notices to the Rails logger.
      config.active_support.deprecation = :log
      # Raise an error on page load if there are pending migrations.
      config.active_record.migration_error = :page_load
      # Highlight code that triggered database queries in logs.
      config.active_record.verbose_query_logs = true
    end
    EOF
  end
end

#friendly_idObject



46
47
48
49
50
# File 'lib/generators/spotlight/install_generator.rb', line 46

def friendly_id
  gem 'friendly_id'
  bundle_install
  generate 'friendly_id'
end

#generate_configObject



160
161
162
# File 'lib/generators/spotlight/install_generator.rb', line 160

def generate_config
  directory 'config'
end

#generate_devise_invitableObject



169
170
171
172
173
174
# File 'lib/generators/spotlight/install_generator.rb', line 169

def generate_devise_invitable
  gem 'devise_invitable'
  bundle_install
  generate 'devise_invitable:install'
  generate 'devise_invitable', 'User'
end

#inject_spotlight_routesObject



38
39
40
41
42
43
44
# File 'lib/generators/spotlight/install_generator.rb', line 38

def inject_spotlight_routes
  route "mount Spotlight::Engine, at: 'spotlight'"
  gsub_file 'config/routes.rb', /^\s*root.*/ do |match|
    '#  ' + match.strip + ' # replaced by spotlight root path'
  end
  route "root to: 'spotlight/exhibits#index'"
end

#paper_trailObject



59
60
61
# File 'lib/generators/spotlight/install_generator.rb', line 59

def paper_trail
  generate 'paper_trail:install'
end

#riiifObject



52
53
54
55
56
57
# File 'lib/generators/spotlight/install_generator.rb', line 52

def riiif
  gem 'riiif'
  Bundler.with_clean_env { run 'bundle install' }
  route "mount Riiif::Engine => '/images', as: 'riiif'"
  copy_file 'config/initializers/riiif.rb'
end

#sitemapsObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/generators/spotlight/install_generator.rb', line 63

def sitemaps
  gem 'sitemap_generator'

  bundle_install

  copy_file 'config/sitemap.rb', 'config/sitemap.rb'

  say <<-EOS.strip_heredoc, :red
   Added a default sitemap_generator configuration in config/sitemap.rb; please
   update the default host to match your environment
  EOS
end