Sha256: 1081c0758593cafffe8078c7fcf46ed6c7c555224a64726b8524da4a2cd5ff35

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

module JsRoutes

  class Railtie < ::Rails::Railtie

    config.before_configuration do
      config.action_view.javascript_expansions[:defaults] |= %w{ js_routes jquery.pathBuilder.js }
    end

    config.after_initialize do
      if Rails.env.development?
        ApplicationController.class_eval do
          before_filter do
            JsRoutes.generate_routes_file
          end
        end
      end
    end

    initializer 'js_routes.generate_routes_file', :after=> :build_middleware_stack do |app|
      JsRoutes.generate_routes_file
      FileUtils.cp File.expand_path('../../assets/javascripts/jquery.pathBuilder.js', __FILE__), File.join(Rails.root, 'public', 'javascripts')
    end

  end

  def self.generate_routes_file
    puts 'GENERATING ROUTES FILE'
    filename = File.join(Rails.root, 'public', 'javascripts', 'js_routes.js')
    FileUtils.rm filename, :force => true
    File.open(filename, 'w') do |f|
      f << 'window.Routes = {};'
      Rails.application.routes.routes.each do |route|
        defaults = route.defaults

        continue if defaults.present? && defaults.has?(:exclude_from_js)

        f << <<-JS.strip
          Routes.#{route.name}_path = function() {
              Array.prototype.unshift.call(arguments, '#{route.path}');
              return $.buildPath.apply($, arguments);
          };
        JS
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
js_routes-0.1.3 lib/js_routes/railtie.rb