机架中间件从子模块提供静态文件夹
Rack middleware serve static folders from submodule
机架(rails)问题:
鉴于我正在将一个子模块加载到我的 Rails 应用程序中,
我想从子模块的 {folder_a, folder_b}
提供静态文件
我无法将子模块的文件夹移动到 /public
,因为我只想要
提供子模块中的一些文件(而不是全部)
我如何配置 Rack 来做到这一点?
我的结构如下所示:
config.ru
submodule/public/folder_a/
submodule/public/folder_b/
public/
我想要下面的映射
submodule/public/folder_a => http://localhost:3000/folder_a
submodule/public/folder_b => http://localhost:3000/folder_b
到目前为止我尝试了什么:
use Rack::Static, :urls => ["/folder_a", "folder_b"], :root => "submodule/public"
那没有用,我的服务器 /folder_a
上没有响应。这个想法部分来自(旧)问题 How to serve static files via Rack?,但它似乎暗示了失败的旧解决方案(目前我的项目正在使用 Rack 1.5.2)。
我还尝试将我想要的文件夹符号链接到 /public,这很有效。
但是我相信直接使用Rack会更漂亮更优雅
有什么建议吗?
根据您的 Rails 应用程序的启动方式,工作目录可能会被弄乱。
我在 Rails 应用程序中使用了以下 config.ru:
# This file is used by Rack-based servers to start the application.
use Rack::Static, :urls => ["/folder_a", "/folder_b"], :root => ::File.expand_path("submodule/public")
require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
然后在终端中:
$ rails server -d
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
$ curl http://0.0.0.0:3000/folder_a/index.html
A
$ curl http://0.0.0.0:3000/folder_b/index.html
B
机架(rails)问题:
鉴于我正在将一个子模块加载到我的 Rails 应用程序中,
我想从子模块的 {folder_a, folder_b}
我无法将子模块的文件夹移动到 /public
,因为我只想要
提供子模块中的一些文件(而不是全部)
我如何配置 Rack 来做到这一点?
我的结构如下所示:
config.ru
submodule/public/folder_a/
submodule/public/folder_b/
public/
我想要下面的映射
submodule/public/folder_a => http://localhost:3000/folder_a
submodule/public/folder_b => http://localhost:3000/folder_b
到目前为止我尝试了什么:
use Rack::Static, :urls => ["/folder_a", "folder_b"], :root => "submodule/public"
那没有用,我的服务器 /folder_a
上没有响应。这个想法部分来自(旧)问题 How to serve static files via Rack?,但它似乎暗示了失败的旧解决方案(目前我的项目正在使用 Rack 1.5.2)。
我还尝试将我想要的文件夹符号链接到 /public,这很有效。 但是我相信直接使用Rack会更漂亮更优雅
有什么建议吗?
根据您的 Rails 应用程序的启动方式,工作目录可能会被弄乱。
我在 Rails 应用程序中使用了以下 config.ru:
# This file is used by Rack-based servers to start the application.
use Rack::Static, :urls => ["/folder_a", "/folder_b"], :root => ::File.expand_path("submodule/public")
require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
然后在终端中:
$ rails server -d
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
$ curl http://0.0.0.0:3000/folder_a/index.html
A
$ curl http://0.0.0.0:3000/folder_b/index.html
B