Class: WebpackOnRails::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#create_client_dirsObject



8
9
10
11
12
13
14
15
16
17
# File 'lib/generators/webpack_on_rails/install_generator.rb', line 8

def create_client_dirs
  empty_directory "client"
  empty_directory "client/config"
  empty_directory "client/config/loaders"
  empty_directory "client/config/plugins"
  empty_directory "client/entries"
  empty_directory "client/lib"

  create_file "client/lib/.gitkeep"
end

#create_configsObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/webpack_on_rails/install_generator.rb', line 23

def create_configs
  template "client/config/shared.js", "client/config/shared.js"
  template "client/config/development.js", "client/config/development.js"
  template "client/config/server.development.js", "client/config/server.development.js"
  template "client/config/production.js", "client/config/production.js"

  template "client/config/loaders/babel.js", "client/config/loaders/babel.js"
  template "client/config/loaders/font.js", "client/config/loaders/font.js"
  template "client/config/loaders/css.js", "client/config/loaders/css.js"
  template "client/config/loaders/sass.js", "client/config/loaders/sass.js"
  template "client/config/loaders/extract-text-sass.js", "client/config/loaders/extract-text-sass.js"

  template "client/config/plugins/extract-text-css.js", "client/config/plugins/extract-text-css.js"
end

#create_empty_webpack_applicationObject



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

def create_empty_webpack_application
  empty_directory "client/entries/webpack-application"

  template "client/entries/webpack-application/index.js.empty", "client/entries/webpack-application/index.js"
end

#create_package_jsonObject



19
20
21
# File 'lib/generators/webpack_on_rails/install_generator.rb', line 19

def create_package_json
  template "client/package.json", "client/package.json"
end

#disable_asset_debugObject



54
55
56
57
58
59
# File 'lib/generators/webpack_on_rails/install_generator.rb', line 54

def disable_asset_debug
  gsub_file \
    "config/environments/development.rb",
    /config\.assets\.debug\s*=\s*\w+$/,
    "config.assets.debug = false"
end

#replace_asset_hostObject



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

def replace_asset_host
  inject_into_class \
    "config/application.rb",
    "Application",
    <<-ASSET_HOST
    if ENV["ASSET_HOST"].present?
Rails.application.config.action_controller.asset_host = proc { |source, _request|
  ENV["ASSET_HOST"]
}
    end

    ASSET_HOST
end

#set_asset_manifest_locationObject



44
45
46
47
48
49
50
51
52
# File 'lib/generators/webpack_on_rails/install_generator.rb', line 44

def set_asset_manifest_location
  append_to_file "config/initializers/assets.rb" do
    <<-ASSET_MANIFEST.strip_heredoc

      # Avoid creating the manifest file in public/assets as it can be downloaded by anyone
      Rails.configuration.assets.manifest = Rails.root.join("config", "sprockets-manifest.json")
    ASSET_MANIFEST
  end
end