Sha256: 15c7df1e09bd5632349f14be277204b3dae62b200c0b16845c2bb08c216a3c7b

Contents?: true

Size: 1.89 KB

Versions: 3

Compression:

Stored size: 1.89 KB

Contents

class GenerateConsoleViewTask < Rake::TaskLib
  attr_accessor :layout, :views

  def initialize(name)
    yield self if block_given?
    define(name)
  end
  def define(name)
    task name => [:environment] do
      views.each_pair do |view_path, file|
        File.open(File.join(Rails.root, 'public', file), 'w') do |f|
          f.write(render(view_path))
        end
      end
    end
  end

  protected
    def render(template)
      view.render :template => template.dup, :layout => layout
    end
    def controller_class
      ConsoleController
    end
    def controller
      controller = controller_class.new
      controller.request = ActionDispatch::TestRequest.new({'SCRIPT_NAME' => ENV['RAILS_RELATIVE_URL_ROOT']})
      controller.env = controller.request.env
      controller
    end

    def add_view_helpers(view, routes)
      view.class_eval do
        include routes.url_helpers

        include Console::LayoutHelper
        include Console::HelpHelper
        include Console::Html5BoilerplateHelper
        include Console::ModelHelper
        include Console::SecuredHelper
        include Console::CommunityHelper
        include Console::ConsoleHelper
      end
    end

    def subclass_view(view, routes)
      view.class_eval do
        def protect_against_forgery?
          false
        end

        def default_url_options
           {:host => 'localhost'}
        end
      end
    end

    def view
      view = ActionView::Base.new(ActionController::Base.view_paths, {}, controller)

      routes = Rails.application.routes
      routes.default_url_options = {:host => 'localhost'}

      add_view_helpers(view, routes)
      subclass_view(view, routes)

      view
    end
end

namespace :assets do
  GenerateConsoleViewTask.new(:public_pages) do |t|
    t.layout = 'layouts/console'
    t.views = {
      'console/not_found' => '404.html',
      'console/error'     => '500.html',
    }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openshift-origin-console-1.3.4 lib/tasks/assets.rake
openshift-origin-console-1.3.3 lib/tasks/assets.rake
openshift-origin-console-1.3.2 lib/tasks/assets.rake