1

HAML -sass スタイルで css ファイルを記述できるように、sass-railshaml-rails のgem を使用しています。

問題は、プロダクションに行き、スタイルシートをプリコンパイルしたいときです。コマンドrake assets:precompileはエラーなしで実行されますが、生成された application.css は空です。

ここに私のGemfileがあります:

source 'https://rubygems.org'

gem 'rails', '~>3.2'
gem 'pg', '>= 0.14'
gem 'haml-rails' #, '~> 0.3'

group :development, :test do
  gem 'factory_girl_rails'
end

group :developpement do
  gem 'rspec-rails', '>= 2.11'
  gem 'capistrano', '>= 2.12'
  gem 'faker', '>= 1.0'
  gem 'rvm-capistrano'
end

group :test do
  gem 'rspec', '>= 2.11'
  gem 'webrat', '>= 0.7'
  gem 'spork-rails', '>= 3.2'
end

group :assets do
  gem 'sass-rails',   '>= 3.2.3'
  gem 'coffee-rails', '>= 3.2.1'
  gem 'compass-rails', '>= 1.0'
  gem 'execjs'
  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'annotate'
gem 'excel_rails' #, '~> 0.3'
gem 'spreadsheet' #, '~> 0.7'
gem "schema_plus", :git => "git://github.com/lomba/schema_plus.git"
gem 'ar-octopus' #, '~> 0.3'
gem 'squeel' #, '~> 1.0'
gem 'devise' #, '~> 2.1'
gem 'role_model'
gem 'declarative_authorization'
gem 'rails-translate-routes'  #, '~> 0.1'
gem 'validates_timeliness'  #, '~> 3.0'

これが私の(空の) app/assets/stylesheets/application.css.sass です

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 */

https://github.com/rails/sass-railsの推奨に従って、次のコメント行を削除しました。

 *= require_self
 *= require_tree .

私のcss.sassファイルはここに保存されています:

  • アプリ/アセット/スタイルシート/screen.css.sass
  • app/assets/stylesheets/partials/ (screen.css.sass によって参照される多くのパーシャル ファイル _*.css.sass)

===更新===

COMPASS gem を使用していることに注意してください。そのため、ミックスインと変数はスタイルシート間で共有する必要があります。

念のため、これは私の app/assets/stylsheets/screen.css.sass ファイルです:

// This import applies a global reset to any page that imports this stylesheet.
@import blueprint/reset

// To configure blueprint, edit the partials/base.sass file.
@import partials/base

@import blueprint/interaction
@import blueprint/typography
@import blueprint/grid
@import blueprint/buttons
@import blueprint/utilities

@import compass/layout/grid-background
@import compass/typography/lists/inline-block-list
@import compass/typography/lists/horizontal-list
@import compass/utilities/general/float
@import compass/css3/border-radius
@import compass/css3/box-shadow
@import compass/css3/text-shadow
@import compass/css3/transition

@import partials/opf_mixins_et_functions
@import partials/link_icons
@import partials/typo
@import partials/application
@import partials/affichage_donnees
@import partials/tableau_edition
@import partials/page
@import partials/form
@import partials/feedback

=== 更新 2 ===

次の Gem をassets グループに配置したため、Gemfile によって本番環境で問題が発生することに気付きました。

group :assets do
  ...
  gem 'execjs'
  gem 'therubyracer', :platforms => :ruby
  ...
end

本番環境にも JavaScript インタープリターが必要なので、Gemfile 内の任意のグループの外に移動します。

どんなアドバイスでも歓迎

4

3 に答える 3

1

これらの 2 行を削除することをお勧めしますが、自分のファイルを含める必要があります。

*= require screen
*= require_dir partials/

ただし、注意してください。これは機能しません@import。ミックスインと変数が共有されません。そのために実数@importを使用します

于 2013-03-21T21:33:10.157 に答える
0

OK私は次の解決策でそれを解決しました:

最後の回答の精神に従って、 /app/assets/styelsheets/application.css.sass の最後に次の行を追加すると、問題が解決したようです。

@import screen

screen.css.sass によって参照されるすべての部分スタイルシートは、自動的にインポートされます。

于 2013-03-22T11:47:29.147 に答える
0

プリコンパイル済みのアセット (application.js と application.css) が空でした ...

私にとって問題を解決したもの:

  • Gemfile で最新の Rails バージョンを設定します (現時点では 3.2.14)。

  • bundle update

  • bundle install

  • アプリを再起動しますtouch tmp/restart.txt

于 2013-09-14T17:15:25.807 に答える