0

在 Rails 3.2.3 应用程序中,我遇到一个错误,在部署到 heroku 时类似于以下内容:-

Started GET "/" for 59.xx.xx.xx at 2012-xx-xx xx:xx:xx +0000
Completed 500 Internal Server Error in 62ms

ActionView::Template::Error (style.css isn't precompiled)

所以,事实证明:样式表由于某种原因没有被预编译(是的,我尝试了 assets:precompile)。

要解决这个问题,首先我必须在我的开发盒上重现这个错误,这样我可能知道出了什么问题。

因此,我的问题是:

如何在我的机器上重现此问题?

4

2 回答 2

3

默认情况下,Rails 只预编译application.jsapplication.css(以及所有非 JS/CSS 资产)。如果您希望它预编译另一个文件(如果您javascript_include_tag在布局中使用 , 等,则需要这样做),您需要将您的文件添加到预编译文件列表中。

打开config/environments/production.rb,并且应该有一个注释掉的行开头config.assets.precompile和上面的解释。取消注释此行并将其更改为:

config.assets.precompile += %w(stylesheets/style.css)

(如果那不是正确的目录,请使用 style.css 的路径)。

要在开发中重现这一点,您必须修改 development.rb 以具有与 production.rb 相同的资产设置。

[编辑]

正如您所发现的,您可以从命令行在另一个环境中启动内置 Rails 服务器——但是,这会影响除资产管道设置之外的所有内容(类重新加载、数据库连接、电子邮件设置等),所以它有时充其量是欺骗性的(意料之外的副作用),最坏的情况是危险的(不小心向用户发送电子邮件)。不是说没用,只是要小心。;)

于 2012-04-21T08:24:52.033 回答
0

我能够在我的本地开发机器上运行生产环境,只需在启动服务器时指定环境

$ RAILS_ENV=production rails s
=> Booting Thin
=> Rails 3.2.3 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

并且能够重现该问题。不知道在 Rails 中的开发和生产环境之间切换是如此简单

于 2012-04-21T15:24:39.887 回答