Sha256: ec3ecfba2fd273d49151bc8716c570f42b2524d62c661ef16811986767f224f9

Contents?: true

Size: 1.98 KB

Versions: 2

Compression:

Stored size: 1.98 KB

Contents

class Spud::SetupGenerator < ::Rails::Generators::Base
  desc 'Base setup for a new TB application'
  source_root File.expand_path('../templates', __FILE__)

  def setup
    template "views/layouts/application.html.erb", "app/views/layouts/application.html.erb"
    template "application_controller.rb", "app/controllers/application_controller.rb"
    template 'assets/admin.css.scss', 'app/assets/stylesheets/admin/application.css.scss'

    update_base_stylesheet()
    update_base_javascript()

    if defined?(CoffeeScript)
      template 'assets/admin.coffee.erb', 'app/assets/javascripts/admin/application.js.coffee'
    else
      template 'assets/admin.js.erb', 'app/assets/javascripts/admin/application.js'
    end

    environment(spud_core_configs())
    rake('railties:install:migrations')

    if ask("Migrate the database? [Yn] ") == 'Y'
      rake('db:migrate')
    end
  end

private

  def spud_core_configs
    site_name = application_name().titleize
    domain_name = application_name().dasherize
    return <<EOF
Spud::Core.configure do |config|
      config.site_name = "#{site_name}"
      config.from_address = "no-reply@#{domain_name}.com"
    end
EOF
  end

  def update_base_stylesheet()
    extensions = ['css', 'css.scss']
    extensions.each do |ext|
      path = File.join(Rails.root, "app/assets/stylesheets/application.#{ext}")
      if File.exist?(path)
        replace_with_require_directory(path)
        return
      end
    end
  end

  def update_base_javascript()
    extensions = ['js', 'js.coffee']
    extensions.each do |ext|
      path = File.join(Rails.root, "app/assets/javascripts/application.#{ext}")
      if File.exist?(path)
        replace_with_require_directory(path)
        return
      end
    end
  end

  def replace_with_require_directory(path)
    text = File.read(path)
    text.gsub!('require_tree', 'require_directory')
    File.open(path, 'w'){ |f| f.puts(text) }
  end

  def application_name
    Rails.application.class.name.split('::').first.underscore
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tb_core-1.2.0 lib/generators/spud/setup_generator.rb
tb_core-1.1.10 lib/generators/spud/setup_generator.rb