2014-11-24 3 views
3

다른 보석 안에 bootstrap-sass 보석을 포장하려고합니다 (내 엔진이라고 부름). 길을 가면서, 나는 작은 Rails 애플리케이션을 빌드하여 테스트를하고있다. 첫 번째 단계로서 필자는 Rails 응용 프로그램에서 직접 부트 스트랩을 작동시킬 수 있는지 확인하고자했습니다. Gemfile for Rails 앱은 다음과 같습니다 :다른 보석에 bootstrap-sass 보석을 넣어두면 자산 표시가 깨집니다.

gem 'bootstrap-sass', '3.3.1.0' 
gem 'my-engine, path: "~/dev/my-engine" 

괜찮습니다. 부트 스트랩 자산은 내 Rails 애플리케이션에로드되며 모든 것이 잘 보입니다. 이제 Rails 앱에서 부트 스트랩을 꺼내 내 엔진을 통해로드하려고합니다. 내 엔진에 대한

gem 'my-engine, path: "~/dev/my-engine" 

.gemspec가 있습니다 : 같은, 내 레일 응용 프로그램 Gemfile 지금 보이는

spec.add_runtime_dependency 'bootstrap-sass', '3.3.1.0' 

나는 아무런 문제없이 내 엔진 보석을 다시 묶을 수 있습니다. Rails 애플리케이션을 문제없이 다시 묶을 수 있습니다. 톱니가 application.css 파일을 만들려고 할 때

File to import not found or unreadable: bootstrap-sprockets. 

그 브레이크가 발생 내가 레일 응용 프로그램의 페이지를 새로 고침 때, 나는 다음과 같은 오류가 발생합니다. 때때로 이것은 통과 할 것이고 application.js가 빌드 될 때 bootstrap.js 자바 스크립트 파일을 놓치는 것에 대해 다른 오류를 갖게 될 것입니다.

왜 이런 일이 발생합니까? 그것이 내가 게시 된 bootstrap-sass에 왜 영향을 미치는지 확신 할 수는 없지만 그것이 보석을 현지에서 개발하고 출판하지 않았다는 사실과 관련이 있는지 궁금합니다. 나는 bundler 1.5.3을 사용하고있다.

답변

5

엔진에 'bootstrap-sass'가 필요합니다. 이 작업을 수행하는 한 재치있는 곳이 당신의 lib 디렉토리에/내 - engine.rb 파일 :

require 'bootstrap-sass' 

.gemspec의 런타임 종속성으로 부트 스트랩 - 말대꾸 보석을 추가하면 포장하려고 할 때 충분하지 않습니다 보석.

2

scss/js/coffeescript 라이브러리를 계속 사용하려면 bower와 gemfiles를 bootstrap-sass-official의 소스로 이동하는 것이 좋습니다. 레이크 작업 및 자동 구성에는 bower-rails을 사용합니다. 표준 bower에 비해 실제로 라이트/라이트 레이크 태스크 레이어입니다.

답을 해결하면서 보석을 통해 부트 스트랩 문제를 해결 한 이유가 내가 엔진을 단순히 자산으로 전환 한 이유 중 하나였습니다.

# our custom variable overrides 
@import 'overrides/variables'; 

@import 'bootstrap-sass-official/assets/stylesheets/bootstrap-sprockets'; 
@import 'bootstrap-sass-official/assets/stylesheets/bootstrap'; 

참고 : 우리는이 말대꾸 파일을 당신은 우리의 엔진 _application.scss에있는 소스 파일에, 즉 더 긴 경로를 가져와야합니다 지금 bootstrap-sass-official 가져 그러나 완벽하게 제어, 메모를 가지고 당신이 당신의 app을 원하는 경우 sass 변수를 무시하고 엔진이 _application.scss이 아니고application.scss이 아닌지 확인하십시오. 선행 밑줄은 변수/컨텍스트에 중요합니다.

미리 생각해 보았 듯이 전이성 의존성을 무시해야 할 수도 있습니다. 우리는이처럼 사용

는 (다른 사람이 '부트 스트랩-말대꾸 - 공식'등을 사용하는 동안 즉, 일부 종속성 '부트 스트랩'을 사용할 수있다) 우리 .bowerrc 다음과 같은 : 결론적으로

{ 
    "ignoredDependencies": [ 
    "bootstrap", 
    "bootstrap-sass", 
    "bootstrap-sass-official" 
    ] 
} 

우리는 이것을 몇 달 동안 성공적으로 사용 해왔다.bower-rails/vendor/assets에 종속성을 설치하며 엔진에서 참조되는 경우 응용 프로그램 프로젝트에서 참조 할 필요가 없습니다. 라이브러리를 유지/추가/업데이트하고 파일이 어떻게 포함되어 있는지 정확히 알 수 있습니다.

+0

대단히 감사합니다. 나는 이것을 줄 것이다. – CodeSmith