【问题标题】:Rails assets don't get updatedRails 资产没有得到更新
【发布时间】:2012-03-09 21:35:23
【问题描述】:

我有一个 Rails 3.1 应用程序,由于某种原因,当我更改 CSS 时,更改没有显示出来。我做了bundle exec rake assets:precompile,它曾经有帮助,但现在无论如何我都坚持使用旧的 CSS。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 asset-pipeline


    【解决方案1】:

    由于您的资产现在已预编译,您需要使用以下内容清理它们

    bundle exec RAILS_ENV=development rake rails_group=assets assets:clean
    

    【讨论】:

    • 嗯没有帮助..? /Users/username/.rvm/rubies/ruby-1.9.3-p0/bin/ruby /Users/username/.rvm/gems/ruby-1.9.3-p0/bin/rake assets:clean:all RAILS_ENV=production RAILS_GROUPS=assets btw 我提到的问题出现在开发中..
    • 您是否有机会告诉如何关闭资产预编译以进行开发,以便可以立即看到 .css 中所做的更改?
    • 删除 public/assets 中的所有文件并停止运行预编译任务!如果 CSS 没有显示,那么我敢打赌这是一个升级的应用程序??在这种情况下,请检查您的所有配置选项是否与 Rails 管道指南升级部分中的选项匹配。
    • 这不能作为 bundle exec 命令工作,rake assets:clean:all RAILS_ENV=production RAILS_GROUPS=assets 虽然对我有用
    • 我遇到了同样的问题,需要从我的开发配置文件中删除 config.assets.digest = true 以使资产缓存在资产更改时失效。
    【解决方案2】:

    对于我的生产环境,我必须结合上述几个步骤来重新编译我的资产。

    首先我必须做的:

    rake assets:clean
    

    确保我在正确的环境中

    然后我需要删除预编译创建的public/assets 目录(或者只是您需要修复的文件,例如application-<hash>.css

    然后终于重新运行

    rake assets:precompile
    

    并重新启动我的 apache 服务器(我使用 apache 的乘客,未使用 nginx 测试)

    【讨论】:

      【解决方案3】:

      您可能想尝试 rake assets:clean 然后 rake assets:precompile

      【讨论】:

      • 做到了.. 没有任何改变(正在提供旧的 CSS)。
      • 当我这样做时,我在错误中指出它正在执行rake assets:clean:all RAILS_ENV=production RAILS_GROUPS=assets 中的 rake 任务。一旦我将它切换到development,它运行得很好! :) 谢谢。
      【解决方案4】:

      对我来说只是从公共目录中删除已编译的 css/js 文件。

      原来是其他开发者把它放在那里并没有让任何人知道。

      【讨论】:

      • 我也必须这样做,但它不是另一个开发者,它是预编译器。
      【解决方案5】:

      在 rails、chrome、mac 中什么对我有用:

      1 - 在终端中:

      rake assets:clean
      

      2 - 在 Sublime 文本或 Finder 中:

      删除“Public > Assets”文件夹

      3 - 在终端启动 localhost 服务器:

      rails s
      

      4 - 在 chrome 中:

      http://localhost:3000/
      

      5 - 重新加载 chrome 清除缓存(如果相关):

      cmd + shift + R
      

      您现在应该能够更新您的 css 文件并在您的本地主机上看到即时更改,只需重新加载页面

      请勿在终端中运行“rake assets:precompile”,因为它会在“public”文件夹中重新创建文件夹“assets”,您将无法看到 css 文件的更新直接在您的本地主机中

      【讨论】:

      • 最后一个注释是我的解决方案。我在开发中运行rake assets:precompile 只是为了测试一切是否在生产中正常工作。然后我花了 3 个小时寻找这个解决方案。谢谢!
      【解决方案6】:

      万一以后的 Google 员工发现了这个帖子:我在 Rails 4.2.8 应用程序的测试环境中遇到了同样的问题。上述解决方案均无效。在config/environments/test.rb 中设置config.serve_static_files = false 解决了它。

      请记住,这是一个临时修复,因为它会导致不再提供 public 文件夹中的所有文件(包括 404.html、favicon.ico、robots.txt 等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多