【问题标题】:serving static files on sinatra在 sinatra 上提供静态文件
【发布时间】:2021-10-31 09:46:44
【问题描述】:

我是第一次开发 Sinatra 应用程序,但在提供 javascript 资产时遇到了问题。

我遵循将静态文件放在“公共”文件夹中的 Sinatra 约定,它可以在本地工作,但是当我们创建 Docker 映像时,我们会得到 404,而这适用于 localhost。

我知道在哪里可以设置我尝试过的 public_folder: http://sinatrarb.com/configuration.html

但仍然是 404'ing。有没有办法获取*对象并询问它期望 public_folder 在哪里(如 Rails.env)?

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    您可以检查settings 对象。

    irb(main):001:0> require "sinatra"
    => true
    irb(main):002:0> settings.public_folder
    => "/usr/lib/ruby/2.5.0/irb/public"
    

    这允许你创建一个返回路径的路由,像这样

    require 'sinatra'
    
    get '/' do
        settings.public_folder
    end
    

    如果没有更多信息,我猜您的公用文件夹指向 docker 内的错误目录,因为项目 :root 指向的目录与您期望的不同。

    【讨论】:

      最近更新 更多