Loading config/application.rb +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ module Diaspora jquery_ujs.js main.js jsxc.js bookmarklet.js mobile/bookmarklet.js mobile/mobile.js templates.js Loading lib/bookmarklet_renderer.rb +17 −9 Original line number Diff line number Diff line Loading @@ -2,27 +2,35 @@ class BookmarkletRenderer class << self def cached_name @cached ||= Rails.root.join("public", "assets", "bookmarklet.js") @cached_name ||= if Rails.application.config.assets.compile "bookmarklet.js" else Rails.application.assets_manifest.assets["bookmarklet.js"] end end def cached_path @cached_path ||= Rails.root.join("public", "assets", cached_name) end def source_name def source @source ||= Rails.application.assets["bookmarklet.js"].pathname.to_s end def body if !File.exist?(cached_name) && Rails.env.production? raise "please run the Rake task to compile the bookmarklet: `bundle exec rake assets:uglify_bookmarklet`" unless File.exist?(cached_path) || Rails.application.config.assets.compile raise "Please run the rake task to compile the bookmarklet: `bin/rake assets:precompile`" end compile unless Rails.env.production? # don't make me re-run rake in development @body ||= File.read(cached_name) compile if Rails.application.config.assets.compile @body ||= File.read(cached_path) end def compile src = File.read(source_name) src = File.read(source) @body = Uglifier.compile(src) FileUtils.mkdir_p cached_name.dirname File.open(cached_name, "w") {|f| f.write(@body) } FileUtils.mkdir_p cached_path.dirname File.open(cached_path, "w") {|f| f.write(@body) } end end end lib/tasks/assets.rake +3 −10 Original line number Diff line number Diff line Loading @@ -5,24 +5,18 @@ namespace :assets do renderer.render end desc "Uglify bookmarklet snippet" task :uglify_bookmarklet => :environment do BookmarkletRenderer.compile end desc "Create non digest assets" task non_digest_assets: :environment do logger = ::Logging::Logger["assets:non_digest_assets"] non_digest_assets = Diaspora::Application.config.assets.non_digest_assets manifest_path = Dir.glob(Rails.root.join("public", "assets", ".sprockets-manifest-*.json")).first JSON.load(File.new(manifest_path))["assets"].each do |logical_path, digested_path| Rails.application.assets_manifest.assets.each do |logical_path, digested_path| logical_pathname = Pathname.new(logical_path) next unless non_digest_assets.any? {|testpath| logical_pathname.fnmatch?(testpath, File::FNM_PATHNAME) } full_digested_path = File.join(Rails.root, "public/assets", digested_path) full_non_digested_path = File.join(Rails.root, "public/assets", logical_path) full_digested_path = Rails.root.join("public", "assets", digested_path) full_non_digested_path = Rails.root.join("public", "assets", logical_path) next unless FileUtils.uptodate?(full_digested_path, [full_non_digested_path]) Loading @@ -35,7 +29,6 @@ namespace :assets do # Augment precompile with error page generation task :precompile do Rake::Task["assets:generate_error_pages"].invoke Rake::Task["assets:uglify_bookmarklet"].invoke Rake::Task["assets:non_digest_assets"].invoke end end Loading
config/application.rb +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ module Diaspora jquery_ujs.js main.js jsxc.js bookmarklet.js mobile/bookmarklet.js mobile/mobile.js templates.js Loading
lib/bookmarklet_renderer.rb +17 −9 Original line number Diff line number Diff line Loading @@ -2,27 +2,35 @@ class BookmarkletRenderer class << self def cached_name @cached ||= Rails.root.join("public", "assets", "bookmarklet.js") @cached_name ||= if Rails.application.config.assets.compile "bookmarklet.js" else Rails.application.assets_manifest.assets["bookmarklet.js"] end end def cached_path @cached_path ||= Rails.root.join("public", "assets", cached_name) end def source_name def source @source ||= Rails.application.assets["bookmarklet.js"].pathname.to_s end def body if !File.exist?(cached_name) && Rails.env.production? raise "please run the Rake task to compile the bookmarklet: `bundle exec rake assets:uglify_bookmarklet`" unless File.exist?(cached_path) || Rails.application.config.assets.compile raise "Please run the rake task to compile the bookmarklet: `bin/rake assets:precompile`" end compile unless Rails.env.production? # don't make me re-run rake in development @body ||= File.read(cached_name) compile if Rails.application.config.assets.compile @body ||= File.read(cached_path) end def compile src = File.read(source_name) src = File.read(source) @body = Uglifier.compile(src) FileUtils.mkdir_p cached_name.dirname File.open(cached_name, "w") {|f| f.write(@body) } FileUtils.mkdir_p cached_path.dirname File.open(cached_path, "w") {|f| f.write(@body) } end end end
lib/tasks/assets.rake +3 −10 Original line number Diff line number Diff line Loading @@ -5,24 +5,18 @@ namespace :assets do renderer.render end desc "Uglify bookmarklet snippet" task :uglify_bookmarklet => :environment do BookmarkletRenderer.compile end desc "Create non digest assets" task non_digest_assets: :environment do logger = ::Logging::Logger["assets:non_digest_assets"] non_digest_assets = Diaspora::Application.config.assets.non_digest_assets manifest_path = Dir.glob(Rails.root.join("public", "assets", ".sprockets-manifest-*.json")).first JSON.load(File.new(manifest_path))["assets"].each do |logical_path, digested_path| Rails.application.assets_manifest.assets.each do |logical_path, digested_path| logical_pathname = Pathname.new(logical_path) next unless non_digest_assets.any? {|testpath| logical_pathname.fnmatch?(testpath, File::FNM_PATHNAME) } full_digested_path = File.join(Rails.root, "public/assets", digested_path) full_non_digested_path = File.join(Rails.root, "public/assets", logical_path) full_digested_path = Rails.root.join("public", "assets", digested_path) full_non_digested_path = Rails.root.join("public", "assets", logical_path) next unless FileUtils.uptodate?(full_digested_path, [full_non_digested_path]) Loading @@ -35,7 +29,6 @@ namespace :assets do # Augment precompile with error page generation task :precompile do Rake::Task["assets:generate_error_pages"].invoke Rake::Task["assets:uglify_bookmarklet"].invoke Rake::Task["assets:non_digest_assets"].invoke end end