2014-01-27 101 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,您可能想要使用下劃線語法來爲自己節省一些需要頭痛的內容。設計寶石是擴展寶石的一個很好的例子。