【问题标题】:sassc-rails assets changes not being compiledsassc-rails 资产更改未编译
【发布时间】:2016-04-20 11:26:44
【问题描述】:

我正在尝试从sass-rails 转换为sassc-rails。我正在使用rails 4.2.2

当我使用 sassc-rails 时,我的 scss 文件的更改不会反映在视图中,即使我停止并重新启动服务器(我已关闭 spring)。如果我停止服务器并执行rm -r tmp/cache/assets,则会反映更改。

如果我返回sass-rails,它可以正常工作,但我必须在重新启动服务器之前执行rm -r tmp/cache/assets 才能使其正常工作。

我该如何解决这个问题?

【问题讨论】:

  • 您是否在 NFS 或其他类型的网络共享上运行您的开发环境,例如使用 Vagrant?这似乎是我们在尝试迁移到 sassc 时遇到的问题的根源。

标签: ruby-on-rails sass libsass


【解决方案1】:

已通过删除 application.css 文件中的所有文件后缀来解决此问题。例如

@import 'pages.css.scss'
@import 'morris.css'

@import 'pages'
@import 'morris'

感谢boffbowshbolandrmsassc-rails 解决了这个问题

请注意,这个问题似乎还有其他原因,因此另一种方法是turn off asset caching

【讨论】:

    【解决方案2】:

    您需要在应用程序的 lib/sassc/rails/ 中创建一个名为 importer.rb 的配置文件。

    你需要做这样的事情。

    class CSSExtension 
     def postfix 
      ".css" 
     end
     def import_for(original_path, parent_path, full_path)
      import_path = full_path.gsub(/\.css$/,"")
      SassC::Importer::Import.new(import_path)
      end
     end
    

    【讨论】:

    • 我试过这个,但没有帮助。这可能是因为定义没有被自动加载。我确实将 ``` config.autoload_paths += Dir["#{config.root}/lib/sassc/rails"] ``` 添加到 application.rb,但这些答案stackoverflow.com/questions/3356742/… 表明只有在以下情况下自动加载才会起作用父目录与模块名称相同。此外,您不能通过自动加载进行修补,应该使用配置/初始化程序。 (沉思伟的回答)。如果您能解释一下您要做什么,这可能会有所帮助
    • 我现在已将您的代码移至初始化程序,可能需要进行一些修改以使上下文正确。我检查了控制台,新定义现在重载了原始方法。但是它仍然没有解决问题。
    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多