2011-11-23 2 views
0

3 구조 : 나는자산 파이프 라인 레일 내가 응용 프로그램 내 자산 폴더에 다음과 같은 구조 한

- app 
    - assets 
    - application.scss 
    - themes 
     - mytheme 
     - default.scss 

그리고 내 application.haml.html에서 작업을 수행합니다

= stylesheet_link_tag 'application' 
= stylesheet_link_tag "themes/mytheme/default" 

을 지금은 사전 컴파일 할 때 my assets, application.css는 public/assets 폴더에 있지만 mytheme의 default.css는 없습니다.

ActionView :: 템플릿 :: 오류 (테마/mytheme/default.css 미리 컴파일하지 입니다)

내가 그렇게해야하는 일이 항상 스테이징 환경에서 오류가 날 수 있습니다 컴파일러가 모든 자산을 컴파일하는 중입니까?

답변

1

에 한번 이런 식으로 뭔가에 설정 파일을 수정 :

config.assets.precompile + = [ 'default.css']

을 그리고 레이크을 실행 여기에 추가 자원을 읽는 것입니다 태스크를 사전 컴파일하십시오. 자산의 전체 경로를 포함해야 할 수도 있습니다. asset pipeline hereinformation about compiling assets here에 대한 특정 정보를 찾을 수 있습니다.

+0

감사 :

= stylesheet_link_tag 'theme_a' = javascript_include_tag 'theme_a' 

application.rb 그래서 그들은 제대로 미리 컴파일됩니다를 업데이트하는 것을 잊지 마십시오. 그는 단지 application.js와 application.css를 확인하고 있다는 것을 몰랐습니다. – SteenhouwerD

0

예외를 방지하는 방법은 여러 가지가 있습니다
첫 번째는 다음과 같습니다
레이아웃이나 뷰에 = stylesheet_link_tag "themes/mytheme/default"를 사용하지 마십시오. application.css 파일에 올바른 지침을 추가하면됩니다 (나는 require 문장을 의미 함).
두 번째 :
application.rb 파일에서 '실시간 자산 편집'을 사용하도록 설정할 수 있습니다.

셋째 :
"themes/mytheme/default"를 추가하여 스프로킷의 경로를 컴파일 할 수 있습니다. Asset pipeline

1

각 테마마다 다른 레이아웃을 가질 수도 있습니다. 습기가 많지는 않지만, 앱 모듈을 분리하여 부정적인 변경의 영향을 줄이려면 일부 코드를 복제하는 것이 좋습니다. Fragile base class과 비슷한 현상입니다.

나는 index manifest을 활용하고 app/assets을 분리 된 모듈로 구성합니다. 다음 구조는 현재 작업중인 프로젝트에 속합니다. 당신은 하나 개의 모듈 당을 가질 수

app/assets/ 
├── coffeescripts 
│   ├── admin 
│   │   ├── components 
│   │   ├── index.coffee 
│   │   └── initializers 
│   ├── application 
│   │   ├── components 
│   │   ├── index.sass 
│   │   └── initializers 
│   └── crm 
│    ├── components 
│    ├── index.sass 
│    └── initializers 
├── images 
│   ├── admin 
│   ├── application 
│   └── crm 
└── stylesheets 
    ├── admin 
    │   ├── components 
    │   └── index.sass 
    ├── application 
    │   ├── components 
    │   └── index.sass 
    └── crm 
     ├── components 
     └── index.sass 

21 directories, 6 files 

: 예를 들면, CRM 당신의 에이전트가 기업의 판매 과정을 추적 할 수 있도록, 대중 측면, 관리자 UI를하고 : 의 당신이 응용 프로그램은 세 가지 모듈에서 구성되어 있다고 가정 해 봅시다 테마 및 공통된 스타일 시트, 이미지 및 JS 구성 요소를 포함하는 core_theme 일 수 있습니다.

하나의 공유 레이아웃을 만들었는지 여부에 관계없이 다음 줄을 추가하면보다 체계적인 코드베이스와 제대로 사전 컴파일 된 제작 자산으로 연결됩니다.

config.assets.precompile = %w(admin.js application.js crm.js 
           admin.css application.css crm.css)