Merge pull request #7510 from SuperTux88/fix-bookmarklet-for-sprockets-3

Fix bookmarklet for sprockets 3
This commit is contained in:
Benjamin Neff 2017-08-01 03:33:02 +02:00
commit 61afb35803
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
3 changed files with 21 additions and 19 deletions

View file

@ -72,6 +72,7 @@ module Diaspora
jquery_ujs.js jquery_ujs.js
main.js main.js
jsxc.js jsxc.js
bookmarklet.js
mobile/bookmarklet.js mobile/bookmarklet.js
mobile/mobile.js mobile/mobile.js
templates.js templates.js

View file

@ -2,27 +2,35 @@
class BookmarkletRenderer class BookmarkletRenderer
class << self class << self
def cached_name 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 end
def source_name def cached_path
@cached_path ||= Rails.root.join("public", "assets", cached_name)
end
def source
@source ||= Rails.application.assets["bookmarklet.js"].pathname.to_s @source ||= Rails.application.assets["bookmarklet.js"].pathname.to_s
end end
def body def body
if !File.exist?(cached_name) && Rails.env.production? unless File.exist?(cached_path) || Rails.application.config.assets.compile
raise "please run the Rake task to compile the bookmarklet: `bundle exec rake assets:uglify_bookmarklet`" raise "Please run the rake task to compile the bookmarklet: `bin/rake assets:precompile`"
end end
compile unless Rails.env.production? # don't make me re-run rake in development compile if Rails.application.config.assets.compile
@body ||= File.read(cached_name) @body ||= File.read(cached_path)
end end
def compile def compile
src = File.read(source_name) src = File.read(source)
@body = Uglifier.compile(src) @body = Uglifier.compile(src)
FileUtils.mkdir_p cached_name.dirname FileUtils.mkdir_p cached_path.dirname
File.open(cached_name, "w") {|f| f.write(@body) } File.open(cached_path, "w") {|f| f.write(@body) }
end end
end end
end end

View file

@ -5,24 +5,18 @@ namespace :assets do
renderer.render renderer.render
end end
desc "Uglify bookmarklet snippet"
task :uglify_bookmarklet => :environment do
BookmarkletRenderer.compile
end
desc "Create non digest assets" desc "Create non digest assets"
task non_digest_assets: :environment do task non_digest_assets: :environment do
logger = ::Logging::Logger["assets:non_digest_assets"] logger = ::Logging::Logger["assets:non_digest_assets"]
non_digest_assets = Diaspora::Application.config.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) logical_pathname = Pathname.new(logical_path)
next unless non_digest_assets.any? {|testpath| logical_pathname.fnmatch?(testpath, File::FNM_PATHNAME) } 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_digested_path = Rails.root.join("public", "assets", digested_path)
full_non_digested_path = File.join(Rails.root, "public/assets", logical_path) full_non_digested_path = Rails.root.join("public", "assets", logical_path)
next unless FileUtils.uptodate?(full_digested_path, [full_non_digested_path]) next unless FileUtils.uptodate?(full_digested_path, [full_non_digested_path])
@ -35,7 +29,6 @@ namespace :assets do
# Augment precompile with error page generation # Augment precompile with error page generation
task :precompile do task :precompile do
Rake::Task["assets:generate_error_pages"].invoke Rake::Task["assets:generate_error_pages"].invoke
Rake::Task["assets:uglify_bookmarklet"].invoke
Rake::Task["assets:non_digest_assets"].invoke Rake::Task["assets:non_digest_assets"].invoke
end end
end end