18

我一直在用 Rails 开发一个网站,一切都比较顺利。突然间,我对视图和资产的更改不再显示。我更改了样式表或一些 html 并重新加载了我的浏览器,http://0.0.0.0:3000但没有任何变化。所以我重新启动了WEBrick,但仍然没有任何改变。如果我完全改变图像,情况也是如此。

获得新更改的唯一方法是预编译资产:

C:\Users\me\website>rake assets:precompile
C:/Ruby193/bin/ruby.exe C:/Ruby193/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets

为什么将生产显示为 RAILS_ENV?也许我的开发环境不知何故变成了生产环境?但即便如此,我也不应该需要预编译资产来反映更改。无论如何在控制器和 erb 文件中Rails.env.development?返回trueRails.env.production?返回。false

我试过删除我的 /tmp 目录无济于事。

我必须将以下行添加到 config/application.rb 以让 Heroku 使用 compass:

config.assets.initialize_on_precompile = false

但是,无论如何,删除该行对我的问题没有帮助。

4

4 回答 4

38

删除public/assets/目录的内容。这就是预编译文件所在的位置,如果它们存在,它们就会被提供,而不是请求落入 Sprockets。您可以安全地对整个目录进行核对,然后事情应该会再次起作用。

于 2012-10-06T19:11:32.993 回答
10

另一种技术是将 public/assets/ 目录重命名为 public/assets_hide/。然后在运行“rake assets:precompile”并推送到服务器之前将其重命名。这减少了预编译时间,还保留了一些 gem 的资产文件权限,比如 Rich,它复制了资产。

一种更简单的方法是将 config/environments/development.rb 文件修改为:

config.serve_static_assets = false

然后你就不需要弄乱 public/assets 目录了。但是,如果您使用回形针之类的东西来上传图像文件,这将不起作用,因为不会提供图像文件。

于 2012-10-07T04:36:59.043 回答
8

我只是想添加一些可以使接受的答案更容易做的东西。这是我使用的:

rake tmp:cache:clear
rails server
于 2019-01-15T07:42:11.180 回答
4

可能对每个人都很明显,但只是想补充一点,如果删除或重命名 public/assets/ 文件夹,您可能还需要重新启动本地服务器并清除浏览器缓存:-)

于 2014-03-30T18:53:27.657 回答