【问题标题】:Rails dev environment not updating html/css/assets even after restarting serverRails 开发环境即使在重新启动服务器后也不会更新 html/css/assets
【发布时间】:2021-11-30 23:39:56
【问题描述】:

我一直在用 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?也许我的开发环境不知何故变成了生产环境?但即便如此,我也不应该需要预编译资产来反映更改。无论如何,Rails.env.development? 在控制器和 erb 文件中返回 trueRails.env.production? 返回 false

我尝试删除我的 /tmp 目录,但无济于事。

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

config.assets.initialize_on_precompile = false

但是,无论如何,删除该行并没有解决我的问题。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 caching ruby-on-rails-3.2 sprockets


    【解决方案1】:

    删除public/assets/ 目录的内容。这就是预编译文件所在的位置,如果它们存在,它们就会被提供,而不是请求落入 Sprockets。您可以安全地对整个目录进行核对,然后一切都会恢复正常。

    【讨论】:

    • 不幸的是,这对我在开发中仍然不起作用。
    【解决方案2】:

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

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

    config.serve_static_assets = false
    

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

    【讨论】:

      【解决方案3】:

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

      rake tmp:cache:clear
      rails server
      

      【讨论】:

      • 我重命名了一个 SVG 徽标,但它不会在我的视图中更新。 rake tmp:cache:clear 为我修复了它。谢谢!
      • 当我们在 DEV 中时,我们不得不求助于这样的命令,我重复一遍,DEV 环境,这让我难以置信。这就是人们开发并经常更新css等资产的地方。Rails应该在开发环境中自动重新编译scss..叹息
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-28
        • 2016-02-10
        • 2012-04-04
        • 2012-09-29
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多