2012-02-19 21 views
5

編集

この質問は次のようにする必要があります。なぜrails_adminはrake asset:precompileを失敗させますか?Rails 3.1:rails_adminが `rake asset:precompile`を失敗させる原因は何ですか?

私はRails 3.0から3.1にアップグレードし、アセットパイプラインを有効にしています。どこかの道に沿って、rails_adminは私の資産プリコンパイルを壊した:

-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
     rake aborted! 
     Undefined variable: "$red". 
     (in /tmp/build_zkm1tzzdhdh6/vendor/bundle/ruby/1.9.1/bundler/gems/rails_admin-a887eee6e916/app/assets/stylesheets/rails_admin/base/theming.css.scss) 

     Tasks: TOP => assets:precompile:primary 
     (See full trace by running task with --trace) 
     Precompiling assets failed, enabling runtime asset compilation 
     Injecting rails31_enable_runtime_asset_compilation 
     Please see this article for troubleshooting help: 
     http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting 

ここで何が起こっていますか? $redが(別のrails_admin .cssファイルに)定義されています。では、なぜtheming.css.scssにアクセスできないのですか?これを避けるにはどうすればいいですか?

答えて

9

私は、ファイルの設定/環境/ production.rbでこれを固定:私は、このソリューションでは、ルビー1.9.3とRailsのために働いている別の

config.assets.precompile += %w(rails_admin/rails_admin.css rails_admin/rails_admin.js) 

にライン

config.assets.precompile = ['*.js', '*.css'] 

を置き換え 3.1

+0

同じです。投稿されていませんが、これは私が行った解決策です。 – thewillcole

+0

スチルのエラー –

+0

@AnnaBillstromどのバージョンのレールを使用していますか? –

2

苦情がbase.cssにないようです - スタックトレースは問題が/app/assets/stylesheets/rails_admin/base/theming.css.scssにあると言います。変数$ redが呼び出されます。

アセットをプリコンパイルすると、すべてのCSSシートがバブルで個別に表示されます。次にを1つの大きな塊にまとめます。それが失敗した理由です。$red変数は、コンパイルされたバージョンに表示されるにもかかわらず、個々のシートに表示されません。

theming.css.scss内の$redを実際のカラーコードに置き換えるか、変数をファイルに移動してそのファイルをインポートすることができます。例えば、私のアプリでは、すべての色変数を "color_codes.css.scss"に入れました。そして、私がそれらを参照する必要があるスタイルシートでは、シートの一番上に@import "color_codes";という行を追加します。

+0

ありがとう、マーク!いくつかのこと:1) "/app/assets/stylesheets/rails_admin/base/theming.css.scss"というファイルがないので、 "base.css"などからオンザフライで作成されたものと仮定します。 2)仮定が正しければ、how/whyは "base.css"でも "$ red"を参照しますか? – thewillcole

+0

また、私は一般的にあなたの "color_codes"スタイルが好きですが、 "rails_admin"宝石をインストールしたときに生成された "rails_admin"のコードを編集/維持する必要はありません。だから私はまだその解決策を使用するつもりはありません。 – thewillcole

+1

おっと、ファイルパスの正面が見えなかった - これは宝石と一緒に来たコードだとは気付かなかった。これはbase.cssからオンザフライでコンパイルされていません。実際には、Railsアプリケーションの外にあるディレクトリ内の宝石自体によって参照されています。一般的にアセットをあらかじめコンパイルする場合、RailsAdmin gemに問題があるようです。ここで役立つかもしれない長いディスカッションスレッドがあります:https://github.com/sferik/rails_admin/issues/682。 –

3

Whoa!私はこの問題を発見しました - それはHerokuのknown issueです。

rails_admin .cssまたは.jsファイルをブランケットにすることはできません。すなわち:。

  • *あなたはどんなキャッチオールを持っていないことを確認してください(CSS | JS) config.assets.precompile
  • では、あなたがapplication.(css|js)
に任意のキャッチオール require_tree .を持っていないことを確認してください

私の問題は私が前者をやっていることです。これは、私のCSSファイルが孤立してロードされるため、$redのような変数はそれらの間で正しく共有されません。

関連する問題