2013-03-21 56 views
1

我正在使用sass-railshaml-rails宝石,这样我就可以用HAML-sass风格编写css文件。为什么耙子资产:预编译产生一个空的CSS样式表?

事情是当我想要生产并预编译我的样式表时,命令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' 

这是我的(空的)应用程序/资产/样式表/ 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. 
* 
*/ 

我删除了以下注释行按recommandation上https://github.com/rails/sass-rails

*= require_self 
*= require_tree . 

我css.sass文件都存储在这里:

  • 应用程序/资产/样式表/ screen.css.sass
  • 应用程序/资产/样式表/分音/(很多谐音的文件_ *。css.sass通过screen.css.sass引用)

=== UPDATE ===

请注意我正在使用COMPASS gem。所以mixin和变量需要在样式表之间共享。

以防万一,这是我的应用程序/资产/ 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 ===

我意识到我的Gemfile会导致我在生产中遇到麻烦,因为我把下面的宝石资产组在:

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

因为生产 environnement以及需要一个JavaScript解释器... 所以我会将它们移到我的Gemfile中的任何组之外。

任何意见,欢迎

+0

你是否包括特定页面上的样式表?你有没有设置你的环境文件来编译嵌套在partials文件夹中的样式表? – Ben 2013-03-21 19:55:08

+0

我不明白你的问题。我得到了一个铁轨的标准样式表:screen.css.sass在App/assets/stylesheets partial目录中提供了部分样式表。我没有修改任何环境文件。 – Douglas 2013-03-22 11:14:21

回答

0

OK我用以下解决方案解决了它真正的@import

继上次回答的精神,看来添加以下行我/应用/资产/ styelsheets结束/ application.css。上海社会科学院解决了我的问题:

@import screen 

每个引用局部样式通过screen.css.sass将被自动导入。

1

你建议删除这两条线,但你仍然需要自己包括你的文件:

*= require screen 
*= require_dir partials/ 

确实注意到一些东西,但是:这并不像@import工作 - 你不会得到你的mixins和变量共享。使用该

+0

我认为sass-rail是遵循CoC(Convention over Configuration)的铁路理念。你是说我不得不分别使用@import:screen.css.sass和所有部分样式表screen.css.sass引用(in:app/assets/stylsheets/partials /)?当我使用COMPASS时,我需要mixins和变量来共享。所以链轮“require screen”和“require_dir partials /”对我来说是被禁止的。 – Douglas 2013-03-22 11:17:25

+0

如果你不想使用你删除的两个指令,是的,你有。或者使用application.css.scss和'@ import'你自己:) – Ven 2013-03-22 15:44:47

0

我的预编译的资产(的application.js和application.css)是空的......

什么解决了我的问题:

  • 设置的最后一个轨道版本的Gemfile(3.2.14现在)

  • bundle update

  • bundle install

  • 重启应用touch tmp/restart.txt