X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=vendor%2Frails%2Frailties%2Flib%2Frails%2Frack%2Fstatic.rb;fp=vendor%2Frails%2Frailties%2Flib%2Frails%2Frack%2Fstatic.rb;h=45eb0e5921fec58095f9498dd21dfcf94cca94db;hb=d115f2e23823271635bad69229a42cd8ac68debe;hp=0000000000000000000000000000000000000000;hpb=37cb670bf3ddde90b214e591f100ed4446469484;p=depot.git

diff --git a/vendor/rails/railties/lib/rails/rack/static.rb b/vendor/rails/railties/lib/rails/rack/static.rb
new file mode 100644
index 0000000..45eb0e5
--- /dev/null
+++ b/vendor/rails/railties/lib/rails/rack/static.rb
@@ -0,0 +1,35 @@
+module Rails
+  module Rack
+    class Static
+      FILE_METHODS = %w(GET HEAD).freeze
+
+      def initialize(app)
+        @app = app
+        @file_server = ::Rack::File.new(File.join(RAILS_ROOT, "public"))
+      end
+
+      def call(env)
+        path        = env['PATH_INFO'].chomp('/')
+        method      = env['REQUEST_METHOD']
+        cached_path = (path.empty? ? 'index' : path) + ::ActionController::Base.page_cache_extension
+
+        if FILE_METHODS.include?(method)
+          if file_exist?(path)
+            return @file_server.call(env)
+          elsif file_exist?(cached_path)
+            env['PATH_INFO'] = cached_path
+            return @file_server.call(env)
+          end
+        end
+
+        @app.call(env)
+      end
+
+      private
+        def file_exist?(path)
+          full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
+          File.file?(full_path) && File.readable?(full_path)
+        end
+    end
+  end
+end