Sha256: 2a7b7ba0ceb065e7cfd122748deda63f1519fcc043afd13a69b8b9e3d68a449e

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

ActionController::Base.class_eval do
  def self.defer_scripts
    before_filter :defer_scripts
  end
  
  def defer_scripts
    Thread.current[:deferred_scripts_called] = false
    Thread.current[:defer_scripts] = request.xhr? ? false : true
  end
  
  def self.defer_scripts?
    !!Thread.current[:defer_scripts]
  end
end

ActionView::Base.class_eval do
  def defer_scripts?
    ActionController::Base.defer_scripts?
  end
      
  def initialize_deferred_scripts
    return "" unless defer_scripts?
    not_deferred_script do
      javascript_tag "var deferred = [];"
    end
  end
  
  def not_deferred_script &block
    before = Thread.current[:defer_scripts]
    begin
      Thread.current[:defer_scripts] = false
      block.call
    ensure
      Thread.current[:defer_scripts] = before
    end
  end
  
  def call_deferred_scripts
    return "" unless defer_scripts?
    Thread.current[:deferred_scripts_called] = true
    content = <<END
$.each(deferred, function(){this()});
$('._deferred').show();
deferred = [];
END
    not_deferred_script do
      javascript_tag content
    end
  end
  
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails-ext-0.2.6 lib/rails_ext/defer_javascript.rb
rails-ext-0.2.5 lib/rails_ext/defer_javascript.rb
rails-ext-0.2.4 lib/rails_ext/defer_javascript.rb
rails-ext-0.2.3 lib/rails_ext/defer_javascript.rb
rails-ext-0.2.1 lib/rails_ext/defer_javascript.rb
rails-ext-0.2.0 lib/rails_ext/defer_javascript.rb