class ActiveScaffold::Generators::InstallGenerator

Public Instance Methods

add_concern_routes() click to toggle source
# File lib/generators/active_scaffold/install_generator.rb, line 9
def add_concern_routes
  route 'concern :active_scaffold, ActiveScaffold::Routing::Basic.new(association: true)'
  route 'concern :active_scaffold_association, ActiveScaffold::Routing::Association.new'
end
add_to_javascript_manifest() click to toggle source
# File lib/generators/active_scaffold/install_generator.rb, line 14
def add_to_javascript_manifest
  file = 'app/assets/javascripts/application.js'
  unless File.exist?(file)
    if Rails.version >= '6.0'
      create_javascript_manifest file
      return
    end
    say_status :missing, file, :red
    return if options[:pretend]
    raise Thor::Error, "JS file #{file} is required for ActiveScaffold"
  end
  original_js = File.binread(file)
  if original_js.include?('require active_scaffold')
    say_status('skipped', "insert into #{file}", :yellow)
  else
    insert_into_file file, after: %r{//= require +.*ujs['"]?\n} do
      "//= require active_scaffold\n"
    end
  end
  setup_jquery file, original_js
end
add_to_stylesheet_manifest() click to toggle source
# File lib/generators/active_scaffold/install_generator.rb, line 36
def add_to_stylesheet_manifest
  file = 'app/assets/stylesheets/application.css'
  return unless File.exist?(file)
  original_css = File.binread(file)
  if original_css.match?(/require active_scaffold$/)
    say_status('skipped', 'insert into app/assets/stylesheets/application.css', :yellow)
  else
    insert_into_file 'app/assets/stylesheets/application.css', before: %r{[ ]*\*/} do
      " *= require active_scaffold\n"
    end
  end
end

Protected Instance Methods

create_javascript_manifest(file) click to toggle source
# File lib/generators/active_scaffold/install_generator.rb, line 51
      def create_javascript_manifest(file)
        FileUtils.mkdir_p File.dirname(file)
        File.open(file, 'w') do |f|
          f << "// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
// vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require active_scaffold
"
          say_status('create', file)
        end
        insert_into_file 'app/views/layouts/application.html.erb', after: /javascript_pack_tag 'application'.*\n/ do
          "    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload', 'data-turbo-track': 'reload' %>\n"
        end
        append_to_file 'config/initializers/assets.rb' do
          "Rails.application.config.assets.precompile += %w( application.js )\n"
        end
        setup_jquery file, where: 'active_scaffold'
      end
setup_jquery(file, original_js = nil, where: 'ujs') click to toggle source
# File lib/generators/active_scaffold/install_generator.rb, line 79
def setup_jquery(file, original_js = nil, where: 'ujs')
  original_js ||= File.binread(file)
  if ActiveScaffold.js_framework == :jquery
    unless original_js.include?('require jquery')
      insert_into_file file, before: %r{//= require +.*#{where}['"]?\n} do
        "//= require jquery\n"
      end
    end
  else
    say_status('missing', 'no jquery-rails gem, load jquery in your layout, or add jquery-rails to Gemfile and add //= require jquery to application.js', :red)
  end
end