2

我正在使用unicorn来提供sinatra应用程序,前端使用的是bootstrap.jsjQuery(UI)

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

这些文件由 Sinatra 提供的 ERB 文件中.js的普通 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 无关,但这是我目前的情况。如果有什么我应该调查的,或者是否应该在问题中添加更多信息,请告诉我。

4

2 回答 2

1

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

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

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

于 2012-05-18T13:58:22.950 回答
0

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

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

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

于 2012-05-18T18:28:01.963 回答