Rails资产未正确编译

时间:2013-06-13 10:31:54

标签: ruby-on-rails-3 asset-pipeline

我已经在这个问题上敲了几天,所以希望有人可以提供帮助。

我有一个非常基本的Rails应用程序(3.2.13),使用以下宝石进行twitter引导样式

gem 'bootstrap-sass'
gem 'font-awesome-sass-rails'

资产按以下方式列出

- stylesheets
    - all
        bootstrap_override.css.scss
    - public
        styles.css.scss
    - admin
        styles.css.scss

bootstrap override中包含以下代码

$baseLineHeight: 18px;
$baseFontSize: 14px;
$sansFontFamily: 'Open Sans';
$baseFontFamily: 'Open Sans';
$monoFontFamily: 'Ubuntu Mono';
$linkColor: #56b1e4;
$btnPrimaryBackground: #86b063;

@import "bootstrap";
@import 'font-awesome';

public.css.scss具有以下内容,并在所有公共页面的默认布局中使用

/*
 *
 *= require_self
 *= require_tree ./all
 *= require_tree ./public
 */

admin.css.scss如下所示,用于没有admin命名空间的页面

/*
 *
 *= require_self
 *= require_tree ./all
 *= require_tree ./admin
 */

这是问题所在:

在制作时,公共页面工作正常,没有错误。但是管理页面会抛出500以下

ActionView::Template::Error (File to import not found or unreadable: bootstrap.
Load path: /sites/blog/releases/20130613100153
  (in /sites/blog/releases/20130613100153/app/assets/stylesheets/all/bootstrap_and_override.css.scss)):
    5:     meta charset="utf-8"
    6:
    7:     = render 'layouts/custom_fonts'
    8:     = stylesheet_link_tag "admin", media: 'all', 'data-turbolinks-track' => true
    9:     = javascript_include_tag "application", 'data-turbolinks-track' => true
    10:     = render 'layouts/custom_fonts'
    11:
  app/assets/stylesheets/all/bootstrap_and_override.css.scss:14
  app/views/layouts/login.html.slim:8:in `_app_views_layouts_login_html_slim___3383884768077581761_25787440'

我已经尝试清除缓存,重新部署(通过资产管道插件通过Capistrano完成),静态编译资产,没有任何作用。

我显然遗漏了资产设置中的一些关键词,但是什么?

哦,在开发环境中,一切运作都很完美,我假设由于资产pipleline动态编译资产。

1 个答案:

答案 0 :(得分:1)

问题可能是资产管道已经将bootstrap编译为公共,并且不想将其添加到管理员。两种可能的方法:

  1. 将引导程序文件与公共文件和管理文件分开,以便客户端必须加载包含引导程序的基本CSS文件,以及公共或特定于管理员的文件。

  2. 在一个application.css文件中包含public和admin。如果您需要将admin与公共css区分开来,请使用类似于命名空间的body类。