与Unicorn的NGINX在Sinatra上的Javascript错误

时间:2013-05-20 01:15:52

标签: javascript html5 nginx sinatra unicorn

我创建了一个在NGINX上使用Unicorn Web Server和Sinatra运行的站点。我在本地创建了这个网站,一切都很棒。但是,上传后,主页上的倒计时不起作用。当我使用chrome(网络版,位于http://udidreg.com)进行检查时,出现以下错误:

未捕获TypeError:对象[object Object]没有方法'placeholder'customtime.js:41

未捕获的TypeError:对象[object Object]没有方法'倒计时'

然而,当我在本地检查时,没有错误,并且它应该是应该的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

两个我想到了三件事。

  • 您尚未部署更新的customtime.js文件,即使您认为有。
  • customtime.js已被浏览器缓存,但尚未收集新的。
  • Gemfile等没有完整描述项目的要求(例如宝石,脚本等),并且由于您的开发环境设置方式,您不会在开发机器上出现这些错误。

小心尽可能沙箱环境,并确保项目所需的所有内容都在项目中。

一个典型的例子是在具有管理员角色的帐户的计算机上进行开发,然后在具有有限权限的帐户下部署到运行该应用程序的计算机。

使用Ruby开发的经典之作是使用Rubygems安装gems系统,然后通过Bundler为项目安装gem。即使从Gemfile中遗漏了一些必需的宝石,因为系统安装了所需的宝石,不会发生错误。在部署时,发现这些宝石丢失,应用程序失败。

要阻止这种情况发生,请使用Bundler(如果有的话)使用命令bundle install --binstubs --path vendor对项目的宝石进行沙箱化,然后通过bundle exec…或bin目录运行所有内容,例如: bin/rackup config.ru。然后,您的项目将 从通过Bundler安装的gem运行。如果缺少任何内容,它将在开发机器和生产机器上失败。这显然更好。

为了处理javascripts和样式表等过时资产,我赞成the method used in this helpful blog post。我非常喜欢它,以至于我已经分配了Sinatra::StaticAssets宝石并重新编写它以加入它,但我还没有完全完成(尽管它仍然有能力摧毁行星,我担心一个人的攻击载人战士),所以如果你有一个github帐户,听起来它可能对你有用,你可以follow it。如果您想尝试它,只需将开发分支添加到您的Gemfile中,并确保让我知道它是否适合您。

修改:I finished the fork and made it into its own gem