2012-11-30 22 views
4

我試圖創建一個gem來放置所有常用樣式表。我無法弄清楚如何在Rails應用程序中導入樣式表。這是我到目前爲止已經進行(以下this guide):爲共享樣式表創建gem並在Rails應用程序中使用它

  1. 我跑bundle gem apple_core

  2. 我修改apple_core.rb包含像這樣一個軌道引擎類:

    require "apple_core/version" 
    
    module AppleCore 
        class Engine < Rails::Engine 
        end 
    end 
    
  3. 我創建使用mkdir -p lib/apple_core/app/assets/stylesheets/apple_core的apple_core樣式表目錄。

  4. 我創建了apple_core樣式表目錄中的索引文件,並添加以下代碼行:

    /* 
    *= require_self 
    *= require_tree . 
    */ 
    
  5. 我在同一個目錄做了test.css.scss文件,並補充說:

    a 
    { 
        color: red; 
    } 
    
  6. 我爲這個gem創建了一個GitHub倉庫並將其推送。

  7. 在我的Rails應用程序中,我將gem添加到資產組中的Gemfile中。我想跑bundle install

我想,包括我在使用@import "apple_core";我的文件中的一個瑰寶,但是當我試圖加載的頁面,我收到一個couldn't find file 'apple_core'錯誤。我在這裏錯過了什麼?

+0

在'vendor/apple_core/app/assets/stylesheets/apple_core'中移動'lib/apple_core/app/assets/stylesheets/apple_core' – apneadiving

+0

你說'@import「apple_core」'是什麼類型的文件? – moritz

+0

@mosch這是一個scss文件。 – LandonSchropp

回答

4

你只需要鏡像你的寶石中的目錄,因爲它們在一個rails項目中。所以你可以把資產置於app/assets,lib/assetsvendor/assets。然後,您必須確保這些文件包含在你的gemspec,例如:

s.files = Dir["{app,config,db,lib,vendor}/**/*"] + ["MIT-LICENSE", "Rakefile", "Readme.md"] 

因此該路徑應然後是vendor/assets/stylesheets/apple_core

+0

我認爲引擎文件的目的是Rails會將資產視爲當前應用程序的一部分。 – LandonSchropp

+0

它的確如此。您仍然必須知道gem目錄中的哪些文件必須包含在gem中,這與rails沒有任何關係。如果你不包含這些文件,引擎不能以任何方式處理它們。 Plus:您在示例中使用的路徑不是有效的(默認情況下)資產路徑。他們都在'{app,lib,vendor}/assets'中。 – ohcibi

相關問題