我是建设一个使用zurb-基金会的样式表一个Rails引擎,白马击中同萨斯::语法错误。 因为我曾跟随在Rails应用程序相同的过程,它是在第一次尝试的工作,这似乎很奇怪。 所以我决定通过启动两个新的轨道项目,以零上ISSE - 一个应用程序和一个引擎 - 并将其配置与设置最少量的使用基础。
我开始用2条干净的Rails 3.2.9项目-一个应用程序和一个engine --full
并把它们加入foundation_and_overrides.scss和手动配置为基础, require
在CSS清单-ing它。
然后我创建一个最基本的控制器,所以我想有一个页面加载。 对于应用程序,加载该页面并查看页面源代码,我可以看到,基础CSS正确和加载编译。
当我试图发动机同样的事情,我得到这个错误:
Sass::SyntaxError in Main#index
Showing /<PLUGIN_PATH>/test/dummy/app/views/layouts/application.html.erb where line #5 raised:
File to import not found or unreadable: foundation/common/ratios.
Load path: /<PLUGIN_PATH>/test/dummy
(in /<PLUGIN_PATH>/app/assets/stylesheets/example_plugin/foundation_and_overrides.scss)
(请注意,虚拟应用程序的CSS清单是require
-ing插件的CSS清单,这是require
-ing foundation_and_overrides.scss,布线显然不是问题,因为错误是来自foundation_and_overrides.scss升起)
我想这与一些建立红宝石1.9.3的(P125,194,P327,我认为)具有相同的结果。
它仍然当我加入这行来测试/空/配置/ application.rb中没有工作:
config.assets.paths << "#{Foundation::Engine.root}/scss"
即使基础/普通/ _ratios.scss存在于该路径。
该问题可能与无礼,链轮,指南针,基金会或者Rails,所以我不知道在哪里可以从这里走。
我报告说,它是与基金的问题 ,但我不那么确信这一点。
谁看过这个吗?
我发现,在回答这个问题#1
问题是,一个Rails引擎的虚拟应用程序,并定期Rails应用程序略有不同的config / application.rb中的文件。
在Rails应用程序,你会看到接近顶部的代码:
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
但是,在发动机的虚拟应用程序,您看到:
Bundler.require
require "<PLUGIN_NAME>"
在Rails应用程序,第一Bundler.require包括在Gemfile中所有群体,但不包括:资产,除非Rails.env是:开发或:测试第二Bundler.require包括:默认情况下 - 也就是,在你的Gemfile任何东西,这不是在一组 - 以及:资产之一:生产:开发或:测试
在一个虚拟的应用程序,这一切都不是必要的,因为1)它并不意味着在生产中使用,并且2)测试和开发通常有类似的依赖性要求。 由于:资产组只是应用的依赖关系的快捷方法:测试:开发而不是:生产,虚拟应用程序是一样的:默认。 因此,在一个虚拟的应用程序,不过是:需要默认。 由于Bundler.require
是(警告:提前剧透)一样Bundler.require(:default)
,虚拟应用程序只使用Bundler.require
。 这意味着,在您的Gemfile任何东西,这是一个组中会被忽略。
所以,我有这个问题是我是复制和粘贴从一个Rails应用程序的Gemfile到一个Rails应用程序虚拟Gemfile中,包括group :assets do...
。 我删除了group
线和一切工作!
加入当天晚些时候在11/29:
为了澄清,我所看到的错误是因为青菜护栏没有被列入(因为它是在:在我的Gemfile资产组),所以不是我的资产作为无礼的话,他们被解析为CSS被解析。 由于@import
意味着CSS,而不是无礼,无论是解析CSS文件不同的东西用不同的实现的@import
,无法找到该文件。
嘿家伙我解决了这个问题,我花了像5小时,以找出如何解决它(抱歉我的英语,是不是我的母语)。
基金会的正常安装在Rails的它并没有为我的发动机工作,所以我手动做到了:
添加此行到application.html.erb: <meta name="viewport" content="width=device-width, initial-scale=1.0>
加入这一行your_engine /应用/资产/ Java脚本/ your_engine_name / application.js中: //= require foundation
这是我如何解决它:
加入这一行your_engine /应用/资产/样式表/ your_engine_name / application.css(注:我没有重命名为application.scss): *= require your_engine_name/foundation_and_overrides
并且:
对于发展,在Gemfile中注释行,说“声明仍处于发展这里,而不是在#你gemspec的依赖。这些措施可能包括从你的路径或#Git的边缘导轨或宝石。请记住,这些依赖移动到您的gemspec之前释放#你的宝石rubygems.org“。 所以,我补充一点,我需要的宝石,(基金会,上海社会科学院,指南针等)
和Tha的一切,这是我得到我的引擎与基金会合作的方式,
文章来源: Sass @import directive when used in Rails engine can't find assets in plugins