【问题标题】:Sinatra, Unicorn, and serving JavaScriptSinatra、Unicorn 和服务 JavaScript
【发布时间】:2012-05-18 13:50:55
【问题描述】:

我正在使用unicornsinatra 应用程序提供服务,而前端使用的是bootstrap.jsjQuery(UI)

目前,当我在本地计算机上运行应用程序并从本地计算机访问页面时,一切正常。但是,我让同事从 LAN 上的机器进行连接,结果却有所不同。目前还不清楚究竟什么加载,什么不加载,但有一件事是肯定的:并非所有的 JavaScript 都将用于远程机器。主页使用 jQueryUI 选项卡,但是当页面加载到除服务器之外的任何主机上时,它会在没有它们的情况下呈现(取而代之的是带有链接的项目符号列表)。

.js 文件由 Sinatra 提供的 ERB 文件中的普通 HTML <script> 标记引用。

unicorn 的输出表明 js 文件正在被请求并正确发送(我正在为每个文件获取 HTTP 200 状态):

xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/jquery-1.7.2.min.js HTTP/1.1" 200 94840 0.0257
xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/jquery-ui-1.8.20.custom.min.js HTTP/1.1" 200 206731 0.0113
xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/bootstrap.js HTTP/1.1" 200 50089 0.0056

每个文件的本地权限为755,位于[app_root]/public/js。

很明显,我的问题与 Sinatra 或 Unicorn 无关,但这是我目前的情况。如果有什么我应该调查的,或者是否应该在问题中添加更多信息,请告诉我。

【问题讨论】:

    标签: ruby webserver sinatra unicorn


    【解决方案1】:

    我认为问题出在 DSL 链接中,如果您的代码中没有描述 /js/jquery-1.7.2.min.js 路由,Sinatra 不理解它,但只要它是静态文件,您就可以这样做:

    set :public, File.dirname(__FILE__) + '/js'
    

    这告诉 Sinatra 您的 /js 文件夹中的所有文件都是静态的,并且应该以正确的方式提供服务

    【讨论】:

    • 我将此添加到问题中以澄清,但我的 javascript 文件位于 [app_root]/public/js - 应该将它们作为静态文件提供服务,对吧?
    • 是的,但我建议您在没有 Unicorn 的情况下启动您的应用程序,并确定 Sinatra 在这种情况下是否正确地为您的 .js 文件提供服务。
    • 因为我不仅仅是需要公开的 js,所以我做了set :public_folder, File.dirname(__FILE__) + '/public',它是js/(以及css/img/)的父级。进行更改后,Unicorn 的行为没有改变,当我自己运行 Sinatra 时,我在索引页面上得到 404。
    • 观察你的日志,Sinatra 试图获得的具体内容以及它有什么路径,我认为现在你有一些路径相关问题。试试:set :root, File.dirname(__FILE__)set :public_folder, Proc.new { File.join(root, 'js')
    【解决方案2】:

    我已经设法让事情正常进行,但在某种程度上让我仍然好奇最初是什么导致了这个问题。

    我一直在我的本地机器上运行 Unicorn,这是一台 MacBook Pro。我决定使用 Ubuntu 映像启动一个 AWS 实例并在那里安装应用程序(这是应用程序完成后的预期用例)。完全不更改配置,应用程序在 AWS 节点上完美运行。显然 MBP 不知道如何成为 Web 服务器。

    如果有人知道为什么会这样,我很想听听他们的意见,但我会接受这个答案,因为问题已经为我解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2015-04-10
      相关资源
      最近更新 更多