2014-01-27 102 views
3

我正在创建一个gem,它将包含在我的应用程序中使用的一些通用变量的基础轨道宝石。我在vendor/assets/stylesheets/foundation.scss上创建了一个样式表。我从我的应用程序中加载这个如此从另一个宝石需要宝石的资产

的Gemfile

gem 'foobar-foundation-rails', path: '...' 

应用程序/资产/样式表/ application.css

//= require foundation 

这是一个很好的起点,但怎么办我在该文件中包含了foundation-rails gem的样式表?我不确定如何引用另一个宝石的资产

回答

2

我认为最好的方法是将要求语句的责任放在您的Rails应用程序的JavaScript文件中。这很可能不是你想要隐藏在宝石中的功能,因为它隐藏了正在发生的事情。

然后确保您需要您的gem的css文件,然后再使用foundation-rails。但是,您应该在您的gem的gemspec文件中添加一个依赖关系需求,以确保在您的gem安装完成时,bundler会安装foundation-rails gem。

此外,您可能必须“命名空间”您的宝石样式表,以避免命名空间冲突。

vendor/assets/stylesheets/foobar_foundation_rails/foundation.css 

这将改变你的样式表文件中的要求,以

require 'foobar_foundation_rails/foundation.scss' 

最后,宝石的命名建立创业板如何被需要。当您使用破折号Rails的预计需要的东西,因此你的宝石的目录结构遵循

lib/foobar/foundation/rails 

,而不是一个下划线命名foobar_foundation_rails

lib/foobar_foundation_rails 

除非你要建立一个“扩展“对于需要被称为foundation-rails-foobar的foundation-rails gem,您可能想要使用下划线语法来为自己节省一些需要头痛的内容。设计宝石是扩展宝石的一个很好的例子。