Ed *_*ida 5 ruby http request emerald-framework
让我试着解释一下我需要什么.
当我在我的HTML页面中包含像Bootstrap这样的库并加载此页面时,也会加载库主文件.大多数情况下,库文件需要其他文件.由于我使用的引导作为一个例子,让我们考虑glyphicons-halflings-regular.svg,glyphicons-halflings-regular.ttf,glyphicons-halflings-regular.woff和glyphicons-halflings-regular.woff2,个个引导的一部分.
我正在编写一个Rack中间件来处理来自我的应用程序的请求.此中间件的任务之一是根据某些约定修改请求.例如,在我的应用程序中,Bootstrap将位于此路径中
ENV['HOME']/my_app/web/libraries/bootstrap/
Run Code Online (Sandbox Code Playgroud)
然后它的主要CSS文件
ENV['HOME']/my_app/web/libraries/bootstrap/css/bootstrap.css
Run Code Online (Sandbox Code Playgroud)
并且,在加载时,它将为我上面提到的所有这些文件生成新请求.
我需要的是确定某个文件,例如glyphicons-halflings-regular.svg,另一个文件是必需的,因此我可以使用我的Rack中间件来相应地更改其位置.喜欢:
Requested file:
`glyphicons-halflings-regular.svg`
Requested-by:
http://my_app_domain.com/web/libraries/bootstrap/css/bootstrap.css
Request address:
http://my_domain_app.com/web/libraries/bootstrap/css/../fonts/glyphicons-halflings-regular.svg
Run Code Online (Sandbox Code Playgroud)
我想为每个新请求启动一个线程.然后我只需要考虑主文件的地址作为基地址,并将其添加到该文件生成的每个子请求中.
我很想听听你对此的看法.有没有更好的方法来做同样的建议?
编辑:( spickermann的问题)
不,这不是重点.也许我不清楚,然后我会试着换句话说.
考虑以下结构:
ENV['HOME']/my_app/web/libraries/library1/
| |
| |_ a_css_file.css
| |_ a_jpeg_file.jpg
|
/library2/
|
|_ another_css_file.css
|_ a_jpeg_file.jpg
Run Code Online (Sandbox Code Playgroud)
假设我的中间件收到了一个名为的文件的请求a_jpeg_file.jpg.我们有两个同名的文件,一个在其中library1,另一个在library2.
我来决定投放哪个文件的唯一方法是,如果我可以知道,如果a_jpeg_file.jpg被要求a_css_file.css或通过another_css_file.css.
在第一种情况下,我会将路径添加library1到文件并提供服务ENV['HOME']/my_app/web/libraries/library1/.在另一种情况下,我将路径前置library2并服务ENV['HOME']/my_app/web/libraries/library2/.
在这两种情况下,我都需要知道生成请求的文件a_jpeg_file.jpg.
换句话说,我需要知道哪个库上下文需要某个文件.
小智 4
也许您可以参数化您的资源,like my-image.jpg?dir='dir1'并解析中间件上的参数。Rails 采用类似的方法来缓存资源。您还可以使用一些 crypt 函数来加密和解密参数中的信息,例如image.jpt?info=HughYF65fFj7t...然后解密中间件中的信息并使用您发送的信息。
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |