class OpalWebpackLoader::LoadPathManager
Public Class Methods
create_load_paths_cache(args)
click to toggle source
# File lib/opal-webpack-loader/load_path_manager.rb, line 33 def self.create_load_paths_cache(args) cache_path = args[0] filter = args[1..-1] load_paths = if File.exist?(File.join('bin', 'rails')) %x{ bundle exec rails runner "puts (Rails.configuration.respond_to?(:assets) ? (Rails.configuration.assets.paths + Opal.paths).uniq : Opal.paths)" } else %x{ bundle exec ruby -e 'if File.exist?("app_loader.rb"); require "./app_loader.rb"; else; require "bundler/setup"; Bundler.require; set :run, false if defined? Sinatra; end; puts Opal.paths' } end if $? == 0 load_path_lines = load_paths.split("\n") load_path_lines.pop if load_path_lines.last == '' load_path_entries = [] cwd = Dir.pwd load_path_lines.each do |path| next if path.start_with?(cwd) more_path_entries = get_load_path_entries(path, filter) load_path_entries.push(*more_path_entries) if more_path_entries.size > 0 end cache_obj = { 'opal_load_paths' => load_path_lines, 'opal_load_path_entries' => load_path_entries } File.write(cache_path, Oj.dump(cache_obj, mode: :strict, indent: 2)) load_path_lines else raise 'Error getting load paths!' exit(2) end end
get_load_path_entries(path, filter)
click to toggle source
# File lib/opal-webpack-loader/load_path_manager.rb, line 3 def self.get_load_path_entries(path, filter) path_entries = [] return [] unless Dir.exist?(path) dir_entries = Dir.entries(path) dir_entries.each do |entry| next if entry == '.' next if entry == '..' next unless entry absolute_path = File.join(path, entry) if File.directory?(absolute_path) more_path_entries = get_load_path_entries(absolute_path, filter) path_entries.push(*more_path_entries) if more_path_entries.size > 0 elsif (absolute_path.end_with?('.rb') || absolute_path.end_with?('.js')) && File.file?(absolute_path) push_entry = true if filter && filter.size > 0 filter.each do |filter_entry| push_entry = false if absolute_path.end_with?(filter_entry) end end path_entries.push(absolute_path) if push_entry end end path_entries end
read_load_paths_cache(json_path)
click to toggle source
# File lib/opal-webpack-loader/load_path_manager.rb, line 28 def self.read_load_paths_cache(json_path) load_paths_cache = Oj.load(File.read(json_path), mode: :strict) load_paths_cache['opal_load_paths'] end