Ruby on rails 从rails引擎导入的Sass不工作
我已经为资产创建了一个Rails引擎。对于css,我不使用链轮。相反,我依赖于sass的@import。这在test/dummy应用程序中工作得非常好,但在需要引擎的Rails应用程序中,它会不断抛出Ruby on rails 从rails引擎导入的Sass不工作,ruby-on-rails,sass,asset-pipeline,rails-engines,ruby-on-rails-4.1,Ruby On Rails,Sass,Asset Pipeline,Rails Engines,Ruby On Rails 4.1,我已经为资产创建了一个Rails引擎。对于css,我不使用链轮。相反,我依赖于sass的@import。这在test/dummy应用程序中工作得非常好,但在需要引擎的Rails应用程序中,它会不断抛出 Sass::SyntaxError: File to import not found or unreadable: gumby. 我在这方面已经有一段时间了,最初该路径不在sass的加载路径中。但后来我又加了一句 config.sass.load_paths << "#{Gem.l
Sass::SyntaxError: File to import not found or unreadable: gumby.
我在这方面已经有一段时间了,最初该路径不在sass的加载路径中。但后来我又加了一句
config.sass.load_paths << "#{Gem.loaded_specs['gumby_on_rails'].full_gem_path}/app/assets/stylesheets"
rails引擎的树如下所示
app/
assets/
stylesheets/
gumby/
...
gumby.css.scss
(我知道从技术上讲,您应该在引擎中为所有资产命名,但我不想使用gumby/gumby,我觉得名称冲突的可能性很小。)
因此,在测试/虚拟应用程序中,我可以通过@import'gumby'导入此文件代码>,但这在Rails应用程序中失败。除上述例外。我怎样才能让它工作
顺便说一句,这是一个Rails 4.1应用程序,其他几个“类似”问题的答案都是由于在文件中使用了组。Rails 4去掉了组,因此这不是问题/解决方案。那么您应该这样写:
config.sass.load_paths << "#{Gem.loaded_specs['gumby_on_rails'].full_gem_path}/app/assets/stylesheets/gumby"
因此,我的解决方案是吸收它并将其命名为gumby/gumby
。然后我还必须将config/application.rb
更改为:
config.assets.paths << "#{Gem.loaded_specs['gumby_on_rails'].full_gem_path}/app/assets/stylesheets"
config.assets.path如果我没有用另一种方法解决问题,这看起来可能已经解决了我的问题。最后!在Rails 4.2.1中,我花了很长时间研究如何添加Sass加载路径config.sass.load_路径
,sass::Engine::DEFAULT_OPTIONS[:load_路径]
,和sass::Plugin.OPTIONS[load_路径]
似乎没有任何效果(与原始问题不同,我没有看到跟踪中列出的路径),但是config.assets.path
可以工作……想想看,可能我的问题是我需要添加一个非Sass路径——我看到我的错误来自ActionView::Template::error
,而不是Sass::SyntaxError
。尽管如此,这个答案似乎解决了我的问题。
@import_tree 'gumby';
config.assets.paths << "#{Gem.loaded_specs['gumby_on_rails'].full_gem_path}/app/assets/stylesheets"