在Rails 3.2.3 app中,遇到错误,部署到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)
所以,事实证明:样式表由于某种原因没有得到预编译(是的,我尝试过资产:预编译)。
解决这个问题,首先我必须在我的开发盒上重现这个错误,所以我可能知道出了什么问题。
因此,我的问题是:
如何在我的机器上重现此问题?
答案 0 :(得分:3)
默认情况下,Rails只预编译application.js
和application.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服务器 - 但是,除了资产之外,这会影响所有内容(类重新加载,数据库连接,电子邮件设置等)管道设置,因此它有时可能充满欺骗(意外的副作用)而在最坏的情况下是危险的(意外地向用户发送电子邮件)。并不是说它没用,只要小心。 ;)
答案 1 :(得分: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
并且能够重现这个问题。不知道在开发与开发之间切换是如此微不足道。轨道生产环境