Sinatra,Unicorn和服务JavaScript

时间:2012-05-18 13:50:56

标签: ruby webserver sinatra unicorn

我正在使用unicorn来投放sinatra个应用,并且前端正在使用bootstrap.jsjQuery(UI)

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

{1}}文件由Sinatra提供的ERB文件中的普通HTML .js标记引用。

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

<script>

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

很明显,我的问题可能不是与Sinatra或Unicorn,但这是我目前的背景。如果有什么我应该查看,或者是否应该在问题中添加更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

我认为问题出现在DSL链接中,如果您的代码中没有描述{Sin},那么Sinatra不理解/js/jquery-1.7.2.min.js路由,但只要它是静态文件就可以执行此操作:

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

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

答案 1 :(得分:0)

我已经设法让事情发挥作用,但在某种程度上让我仍然很好奇是什么原因引起了这个问题。

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

如果有人对这可能的原因有所了解,我很乐意听到他们,但我会接受这个答案,因为问题已经解决了。