我目前正在開發一個基於Rack的應用程序,並希望將所有文件請求(例如filename.filetype)重定向到指定的文件夾。如何通過Rack提供靜態文件?
Rack :: Static僅支持特殊文件夾(例如「/ media」)的文件請求。
我是否必須編寫一個自己的Rack中間件,或者有一個開箱即用的解決方案嗎?
問候
我目前正在開發一個基於Rack的應用程序,並希望將所有文件請求(例如filename.filetype)重定向到指定的文件夾。如何通過Rack提供靜態文件?
Rack :: Static僅支持特殊文件夾(例如「/ media」)的文件請求。
我是否必須編寫一個自己的Rack中間件,或者有一個開箱即用的解決方案嗎?
問候
重定向每一個請求到一個特定的路徑,使用Rack::File
(由於某種原因,這個類是近期文檔中不存在的,但它是still part of最新機架):
run Rack::File.new("/my/path")
要重定向每一個請求,並加入目標目錄中的所有文件的HTML索引,使用Rack::Directory
:
run Rack::Directory.new("/my/path")
要結合幾個目錄或服務只有在目標目錄的一些要求:
map "/url/prefix" do
run Rack::File.new("/my/path")
end
# More calls to map if necessary...
# All other requests.
run MyApp.new
你也許能夠直接使用Rack::File
。這裏有一個config.ru
文件,你可以插入rackup看到它的工作:
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
run Rack::Directory.new(Dir.pwd)
的更新,最新的機架實現允許你使用Rack::Static
例子:
use Rack::Static, :urls => ["/media"]
將提供./media
文件夾下相對於config.ru
位置的所有靜態資源。
我不得不用包裹運行MyApp.new與地圖「/」做..結束。否則,我得到一個未定義的調用方法錯誤。 (不知道爲什麼。) – 2011-04-05 00:31:15