RoR 应用程序:移动到生产服务器后“资产‘application.css’不存在于资产管道中”

Art*_*tur 7 css ruby-on-rails nginx production-environment precompile

将我的 Ruby on Rails 应用程序移动到生产服务器(AWS EC2 Amazon Linux 2018.03)后,页面不会呈现,因为错误“资产‘application.css’不存在于资产管道中”(预编译文件存在于公共/中)资产): 生产.log

但是,当我刷新应用程序时(有时不止一次),可以在缓存中找到该文件,并且页面可以正确呈现。看起来服务器不会等待文件预编译或类似的事情。它不仅发生在首页输入时,而且发生在每次视图变化时。

我遵循帖子中的提示: application.css not in asset pipeline,但这没有帮助。

我的堆栈:

  • 红宝石2.6.3
  • 导轨 5.2.3
  • 独角兽5.5.1
  • nginx 1.14.1

我将非常感谢任何提示。

小智 5

您可以确认您的 app/assets/stylesheets 文件夹应该包含 application.css 文件,并且您必须在生产环境中预编译资产,然后才能在生产环境中启动服务器。您可以使用预编译资产

RAILS_ENV=production rails assets:precompile
Run Code Online (Sandbox Code Playgroud)

如果仍然不起作用,那么您可以尝试在 production.rb 中将 config.assets.compile 选项设置为 true,以便它将进行实时编译。尽管在生产环境中它应该是错误的,因为它会影响性能。

config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)