1

私は3つの異なるCSSテーマを持つアプリケーションを持っており、それらのテーマのそれぞれには1ダースほどの配色があります。開発ではすべてが正常に機能しますが、アセットパイプラインは私にいくつかの奇妙な問題を与えています。

基本的に私はこのようないくつかのファイルを持っています

/themes
  /cool-theme
    _theme.scss
    /color-schemes
      red.scss

SASSに含まれているため、パーシャル(アンダースコアで始まる)を除くすべての*.scssファイルをプリコンパイルするという考え方です。だから私はこのコードを使用しています:

stylesheets_directory = "#{Rails.root}/app/assets/stylesheets"
config.assets.precompile += Dir.glob("#{stylesheets_directory}/**/*.scss").
                            map{|f| f[stylesheets_directory.size+1..-1]}.
                            select do |file|
                            if config.assets.precompile.include?(file)
                              puts "Already have #{file}"
                              false
                            elsif File.basename(file)[0...1] == "_"
                              puts "Partial detected #{file}"
                              false
                            else
                              puts "Including #{file}"
                              true
                            end
                          end

コードは正常に実行され、assets:precompile中に期​​待する出力が表示されます。必要なものすべてを除外し、必要なものすべてを含めます。

問題は、/ public/assetsディレクトリにapplication.css以外のcssファイルが含まれていないことです。red.css、blue.cssなどがありません...

私は何を見落としていますか?

4

1 に答える 1

2

パイプラインがJavascriptファイルとスタイルシートに対して機能する方法は、デフォルトでapplication.jsapplication.cssファイルのみをプリコンパイルすることです。config.assets.precompileこれが、アレイにさらにアセットを追加しようとした理由です。あなたは正しい方向に進んでいますが、いくつかの間違いを犯しました。

ファイル拡張子

名前を変更する必要があります

app/assets/stylesheets/themes/cool-theme/color-schemes/red.scss

app/assets/stylesheets/themes/cool-theme/color-schemes/red.css.scss

これは、.cssコンパイルが終了したときにこれをファイルにすることをパイプラインに通知します。

アセットパス

現在、次のようなパスを追加しています

/Path/To/Your/app/assets/stylesheets/themes/cool-theme/color-schemes/red.scss

config.assets.precompileアレイに。代わりに、この形式でパスを渡す必要があります

themes/cool-theme/color-schemes/red.css

アセットをプリコンパイルすると、ディレクトリツリーの残りの部分を含む新しいthemesフォルダが内部に作成され、コンパイルされたファイルが完成します。public/assets/red.css


config.assets.precompile上記で概説した必要な変更を行うことができる以上の可能性があると思われるため、パスを追加するためのコードを修正することはお任せします。

于 2013-01-31T19:26:00.513 に答える