生产环境中的Rails和Javascript

时间:2015-08-17 01:05:54

标签: javascript jquery ruby-on-rails production-environment

Hello Stack Overflow社区!我是Ruby on Rails的新手,接近我的第一个项目的结尾,我在准备我的应用程序生产方面遇到了一些麻烦。

我的第一个问题是我需要刷新页面以使我的个人jQuery工作。我通过将jquery-turbolinks gem添加到项目并将jquery.turbolinks添加到清单文件来修复此问题。

但是,出于某种原因,这种快速解决方案对我的生产环境不起作用。所以我只是更改了清单文件中某些内容的顺序,将config.serve_static_files更改为false,将config.assets.compile更改为true(在production.rb中)。所以现在我的JS都没有在生产中工作。

然后,从网上收集的信息中,我运行了bundle exec rake资产:precompile。现在,我的JS或CSS效果在制作中都不明显!

最后,为了解决这个错误,我运行了捆绑exec rake资产:干净。现在终端抱怨我在使用git进行更改时有“未跟踪文件”。

显然,我处在一个绝对凌乱的状态。除了这个错误,我的项目运行顺利,所以任何帮助都会非常受欢迎。

PS:一切都在开发环境中完美运行......

1 个答案:

答案 0 :(得分:1)

欢迎使用StackOverflow!

根据您的解释,似乎在本地运行预编译并不是很有效,并且尝试运行rake assets:clean已经让Git说需要提交更改。

在Sprockets中,运行rake assets:clean仅从公共/资产中删除旧资产(保留最新的3个副本) - [source]。运行此命令会更改您的公共/资产目录,并且尚未提交这些更改,因此终端会抱怨。

如果您想要擦除public/assets并从头开始生成资源,您可以执行以下操作:

rake assets:clobber
RAILS_ENV=production bundle exec rake assets:precompile

使用clobber将销毁资产目录,而后面的precompile命令将以应该反映您的生产环境的方式重建资产。提交和部署后,新资产应在生产中正确显示。

希望这有帮助!