2013-08-05 3 views
1

별도의 js 및 css 파일을 필요로하는 북마크릿이 있습니다. 즉 평상시와 같이 하나의 파일로 컴파일되는 것을 원하지 않습니다. config.assets.precompile not working

내가 보통 JS 및 CSS 파일을 분리 할 파일은 다음과 같습니다

assets/javascripts/bookmarklet/tagger.js 
assets/javascripts/bookmarklet/js/bookmarklet.js 
assets/stylesheets/bookmarklet/bookmarklet-frame.css 
application.js에서

내가 //= require_directory .

//= require_three .을 변경 application.css을 그리고 추가 :

config.assets.precompile += [ 'bookmarklet/js/bookmarklet.js', 'bookmarklet/tagger.js', 'bookmarklet/bookmarklet-frame.css' ] 

을 내 production.rbstaging.rb으로 변경하십시오.

application.jsapplication.css는하지만, 내 세 개의 파일이 없습니다 생성됩니다. 왜 이것이 작동하지 않는가?

답변

2

이 같은 줄을 추가하기 만하면 다음 레이아웃 admin.html.erb에 대한 admin.js를 사용할 수 있습니다.

2

대신 require_directory의 require_tree했는지 확인은 require_tree는 재귀 적으로 추가하지만 require_directory하지 않습니다. 당신이 당신의 홍보에 명령 RAILS_ENV=production bundle exec rake assets:precompile와 자산을 사전 컴파일 할 때 asset pipeline

application.js

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

application.css

/* ... 
*= require_self 
*= require_tree . 
*/ 

application.html.erb 지금이 라인

<%= javascript_include_tag "application" %> 
<%= stylesheet_link_tag "application" %> 

이 있어야합니다 참조 oduction 당신이 (하나에 컴파일 된 모든 JS 파일 하나에 CSS)

application.html.erb

<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script> 
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen" rel="stylesheet" /> 

이 기본 application.js에 의해 불필요한이다있을 것이다, application.css는 미리 컴파일된다.

config.assets.precompile += [ 'bookmarklet/js/bookmarklet.js', 'bookmarklet/tagger.js', 'bookmarklet/bookmarklet-frame.css' ] 

때때로 당신은 당신이 production.rb

application.rb

config.assets.precompile += [ 'bookmarklet/js/bookmarklet.js', 'bookmarklet/tagger.js', 'bookmarklet/bookmarklet-frame.css' ] 

를 이동했다

+0

아마도 내가 분명히해야하지만 어쩌면 하나의 파일로 컴파일되기를 원하지 않습니다. 필자가 언급 한 세 개의 파일을 개별 파일로 컴파일해야한다. –

+0

자산 파이프 라인은 JavaScript 및 CSS 자산을 연결하고 축소하거나 압축하기위한 프레임 워크를 제공합니다. 또한 CoffeeScript, Sass 및 ERB와 같은 다른 언어로이 저작물을 작성할 수있는 기능이 추가되었습니다. 자산 파이프 라인을 Rails의 핵심 기능으로 만드는 것은 모든 개발자가 하나의 중앙 라이브러리 인 Sprockets에 의해 자산을 사전 처리, 압축 및 축소 할 수있는 이점을 누릴 수 있음을 의미합니다. 따라서 미리 컴파일해서는 안되는 별도의 파일을 원한다면 기본적으로 자산을 축소하지 않으려 고합니다. –

1

application.rb로 이동할 필요가없는 다른 해결책을 고려해야합니다. 대신 config/application.rb 파일에 'production'을 추가하십시오. '생산'은 기본적으로 목록에 포함되지 않습니다.

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test production))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end