Class: Loco::FileInjectorGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/loco/file_injector/file_injector_generator.rb

Instance Method Summary collapse

Instance Method Details

#application_controllerObject



37
38
39
40
41
42
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 37

def application_controller
  file_path = File.join Rails.root, 'app', 'controllers', 'application_controller.rb'
  data = File.read find_in_source_paths('application_controller.rb')
  after_line = "class ApplicationController < ActionController::Base\n"
  inject_into_file file_path, data, after: after_line
end

#application_helperObject



25
26
27
28
29
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 25

def application_helper
  file_path = File.join Rails.root, 'app', 'helpers', 'application_helper.rb'
  line = %Q{  include Loco::Helpers\n}
  inject_into_file file_path, line, after: "module ApplicationHelper\n"
end

#connectionObject



44
45
46
47
48
49
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 44

def connection
  return if Rails.version.to_f < 5
  file_path = File.join Rails.root, 'app', 'channels', 'application_cable', 'connection.rb'
  data = File.read find_in_source_paths('connection.rb')
  inject_into_class file_path, 'Connection', data
end

#js_manifestObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 4

def js_manifest
  file_path = File.join Rails.root, 'app', 'assets', 'javascripts', 'application.js'
  gsub_file file_path, /^\/\/= require_tree .$/, ''
  gsub_file file_path, /^\n$/, ''
  if Rails.version.to_f >= 5
    gsub_file file_path, "//= require cable\n", ''
    gsub_file file_path, "//= require cable", ''
  end
  data = File.read find_in_source_paths('application.js')
  append_file file_path, data
  if Rails.version.to_f >= 5
    inject_into_file file_path, "//= require cable\n", after: "//= require loco-rails\n"
  end
end

#layoutObject



31
32
33
34
35
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 31

def layout
  file_path = File.join Rails.root, 'app', 'views', 'layouts', 'application.html.erb'
  gsub_file file_path, '<body>', '<%= content_tag :body, loco_body_data do %>'
  gsub_file file_path, '</body>', '<% end %>'
end

#routesObject



19
20
21
22
23
# File 'lib/generators/loco/file_injector/file_injector_generator.rb', line 19

def routes
  file_path = File.join Rails.root, 'config', 'routes.rb'
  line = %Q{  mount Loco::Engine => '/notification-center'\n\n}
  inject_into_file file_path, line, after: "Rails.application.routes.draw do\n"
end