Sha256: 8639551da0d5ed22d2821c35b9b49aa3c7cdc8a014ce51fea50e9281b25c0fb4

Contents?: true

Size: 1.76 KB

Versions: 11

Compression:

Stored size: 1.76 KB

Contents

module React
  module Generators
    class InstallGenerator < ::Rails::Generators::Base
      source_root File.expand_path '../../templates', __FILE__

      desc 'Create default react.js folder layout and prep application.js'

      class_option :skip_git,
        type: :boolean,
        aliases: '-g',
        default: false,
        desc: 'Skip Git keeps'

      def create_directory
        empty_directory 'app/assets/javascripts/components'
        create_file 'app/assets/javascripts/components/.gitkeep' unless options[:skip_git]
      end

      def inject_react
        require_react = "//= require react\n"

        if manifest.exist?
          manifest_contents = File.read(manifest)

          if match = manifest_contents.match(/\/\/=\s+require\s+turbolinks\s+\n/)
            inject_into_file manifest, require_react, { after: match[0] }
          elsif match = manifest_contents.match(/\/\/=\s+require_tree[^\n]*/)
            inject_into_file manifest, require_react, { before: match[0] }
          else
            append_file manifest, require_react
          end
        else
          create_file manifest, require_react
        end
      end

      def inject_components
        inject_into_file manifest, "//= require components\n", {after: "//= require react\n"}
      end

      def inject_react_ujs
        inject_into_file manifest, "//= require react_ujs\n", {after: "//= require react\n"}
      end

      def create_components
        components_js = "//= require_tree ./components\n"
        components_file = File.join(*%w(app assets javascripts components.js))
        create_file components_file, components_js
      end

      private

      def manifest
        Pathname.new(destination_root).join('app/assets/javascripts', 'application.js')
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
react-rails-1.11.0 lib/generators/react/install_generator.rb
react-rails-1.10.0 lib/generators/react/install_generator.rb
react-rails-1.9.0 lib/generators/react/install_generator.rb
react-rails-1.8.2 lib/generators/react/install_generator.rb
react-rails-1.8.1 lib/generators/react/install_generator.rb
react-rails-1.8.0 lib/generators/react/install_generator.rb
react-rails-1.7.2 lib/generators/react/install_generator.rb
react-rails-1.7.1 lib/generators/react/install_generator.rb
react-rails-1.7.0 lib/generators/react/install_generator.rb
react-rails-1.6.2 lib/generators/react/install_generator.rb
react-rails-1.6.1 lib/generators/react/install_generator.rb