Rails 和 Javascript 在生产环境中

Rails and Javascript in production environment

你好 Stack Overflow 社区!我是 Rails 上 Ruby 的新手,在我的第一个项目即将结束时,我在准备好我的应用程序生产时遇到了一些麻烦。

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

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

然后,根据从网上收集的信息,我 运行 bundle exec rake assets:precompile。现在 none 我的 JS 或 CSS 效果在生产中很明显!

最后,为了消除这个错误,我 运行 bundle exec rake assets:clean。现在终端抱怨我在 git.

提交更改时有 "untracked files"

显然,我的处境非常混乱。除了这个错误,我的项目 运行 很顺利,所以任何帮助都会非常非常感谢。

PS: 在开发环境下一切正常...

欢迎使用 Whosebug!

根据您的解释,运行ning 本地预编译似乎不太有效,运行 rake assets:clean 的尝试已离开 Git说有需要提交的更改。

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

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

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

使用 clobber 将破坏资产目录,而其后的 precompile 命令将以反映您的生产环境的方式重建资产。提交这些更改并部署后,您的新资产应该会在生产环境中正确显示。

希望对您有所帮助!