Rails 开发环境即使在重新启动服务器后也不会更新 html/css/assets

问题描述 投票:0回答:6

我一直在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?
返回
true
并且
Rails.env.production?
返回
false

我尝试删除我的 /tmp 目录,但没有成功。

我必须将以下行添加到 config/application.rb 才能让 Heroku 使用指南针:

config.assets.initialize_on_precompile = false

但是,删除该行无论如何都无法解决我的问题。

ruby-on-rails ruby-on-rails-3 caching ruby-on-rails-3.2 sprockets
6个回答
48
投票

删除

public/assets/
目录的内容。这就是预编译文件所在的位置,如果存在,它们就会被提供服务,而不是将请求传递给 Sprockets。您可以安全地对整个目录进行核武器攻击,然后一切就会恢复正常。


12
投票

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

rake tmp:cache:clear
rails server

11
投票

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

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

config.serve_static_assets = false

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


4
投票

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


1
投票

我遇到了同样的问题(Ruby 3.0 和 Rails 6.1),我通过删除

public/assets/
目录然后运行来解决它:

$ rake tmp:cache:clear

$ rake assets:precompile

0
投票

即使删除资产文件夹后,我也无法看到样式更新。

我正在 ruby 3.1.3 docker 容器中运行我的 Rails 7 应用程序。

为我解决的问题是在开发配置文件中设置以下值。

config.assets.debug = true
© www.soinside.com 2019 - 2024. All rights reserved.