PATH: //opt/alt/ruby31/share/gems/gems/rack-3.0.8/lib/rack
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📁 auth/
X
📄 body_proxy.rb
↓
X
📄 builder.rb
↓
X
📄 cascade.rb
↓
X
📄 chunked.rb
↓
X
📄 common_logger.rb
↓
X
📄 conditional_get.rb
↓
X
📄 config.rb
↓
X
📄 constants.rb
↓
X
📄 content_length.rb
↓
X
📄 content_type.rb
↓
X
📄 deflater.rb
↓
X
📄 directory.rb
↓
X
📄 etag.rb
↓
X
📄 events.rb
↓
X
📄 file.rb
↓
X
📄 files.rb
↓
X
📄 head.rb
↓
X
📄 headers.rb
↓
X
📄 lint.rb
↓
X
📄 lock.rb
↓
X
📄 logger.rb
↓
X
📄 media_type.rb
↓
X
📄 method_override.rb
↓
X
📄 mime.rb
↓
X
📄 mock.rb
↓
X
📄 mock_request.rb
↓
X
📄 mock_response.rb
↓
X
📁 multipart/
X
📄 multipart.rb
↓
X
📄 null_logger.rb
↓
X
📄 query_parser.rb
↓
X
📄 recursive.rb
↓
X
📄 reloader.rb
↓
X
📄 request.rb
↓
X
📄 response.rb
↓
X
📄 rewindable_input.rb
↓
X
📄 runtime.rb
↓
X
📄 sendfile.rb
↓
X
📄 show_exceptions.rb
↓
X
📄 show_status.rb
↓
X
📄 static.rb
↓
X
📄 tempfile_reaper.rb
↓
X
📄 urlmap.rb
↓
X
📄 utils.rb
↓
X
📄 version.rb
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: reloader.rb
# frozen_string_literal: true # Copyright (C) 2009-2018 Michael Fellinger <m.fellinger@gmail.com> # Rack::Reloader is subject to the terms of an MIT-style license. # See MIT-LICENSE or https://opensource.org/licenses/MIT. require 'pathname' module Rack # High performant source reloader # # This class acts as Rack middleware. # # What makes it especially suited for use in a production environment is that # any file will only be checked once and there will only be made one system # call stat(2). # # Please note that this will not reload files in the background, it does so # only when actively called. # # It is performing a check/reload cycle at the start of every request, but # also respects a cool down time, during which nothing will be done. class Reloader def initialize(app, cooldown = 10, backend = Stat) @app = app @cooldown = cooldown @last = (Time.now - cooldown) @cache = {} @mtimes = {} @reload_mutex = Mutex.new extend backend end def call(env) if @cooldown and Time.now > @last + @cooldown if Thread.list.size > 1 @reload_mutex.synchronize{ reload! } else reload! end @last = Time.now end @app.call(env) end def reload!(stderr = $stderr) rotation do |file, mtime| previous_mtime = @mtimes[file] ||= mtime safe_load(file, mtime, stderr) if mtime > previous_mtime end end # A safe Kernel::load, issuing the hooks depending on the results def safe_load(file, mtime, stderr = $stderr) load(file) stderr.puts "#{self.class}: reloaded `#{file}'" file rescue LoadError, SyntaxError => ex stderr.puts ex ensure @mtimes[file] = mtime end module Stat def rotation files = [$0, *$LOADED_FEATURES].uniq paths = ['./', *$LOAD_PATH].uniq files.map{|file| next if /\.(so|bundle)$/.match?(file) # cannot reload compiled files found, stat = figure_path(file, paths) next unless found && stat && mtime = stat.mtime @cache[file] = found yield(found, mtime) }.compact end # Takes a relative or absolute +file+ name, a couple possible +paths+ that # the +file+ might reside in. Returns the full path and File::Stat for the # path. def figure_path(file, paths) found = @cache[file] found = file if !found and Pathname.new(file).absolute? found, stat = safe_stat(found) return found, stat if found paths.find do |possible_path| path = ::File.join(possible_path, file) found, stat = safe_stat(path) return ::File.expand_path(found), stat if found end return false, false end def safe_stat(file) return unless file stat = ::File.stat(file) return file, stat if stat.file? rescue Errno::ENOENT, Errno::ENOTDIR, Errno::ESRCH @cache.delete(file) and false end end end end
SIMPAN PERUBAHAN