2012-06-24 4 views
3

저는 거의 4 년 전의 매우 복잡한 레일스 웹 애플리케이션을 가지고 있습니다 :). 일상적으로 사용하는 많은 고객과 함께 살기 때문에 급진적 인 변화를 일으켰을 때 좀 더 무미건조해야합니다.레일스 애셋 파이프 라인으로 점진적으로 업그레이드

필자는 레일 3.2.2로 마이그레이션했지만 여전히 기능적이지만, Scriptaculous, Prototype의 Ajax 호출 (예 : 페이지 매김 등)을 사용하는 많은 코드가 있습니다.

jQuery UJS와 Coffeescript를 사용하여 모든 것을 천천히 마이그레이션하고 싶지만 이러한 변경을 단편적으로 수행해야합니다. 한 번에 하나의 컨트롤러 만 여러 개의 "릴리스"에 걸쳐 수행해야합니다.

하지만 애셋을 켜는 것은 부울 전환입니다.

많은 코드를 손상시키지 않고 기존 코드를 자산 파이프 라인으로 어떻게 마이그레이션 했습니까? 내가 취해야 할 예방 조치는 무엇입니까?

답변

2

이러한 레일 웨이크 에피소드는 나에게 많은 도움이되었습니다.

  1. http://railscasts.com/episodes/279-understanding-the-asset-pipeline
  2. http://railscasts.com/episodes/282-upgrading-to-rails-3-1
  3. http://railscasts.com/episodes/318-upgrading-to-rails-3-2

요약 :

은 (javascrip 당신의 자산을 이동하여 Gemfile

group :assets do 
    gem 'sass-rails' 
    gem 'coffee-rails' 
    gem 'yui-compressor' # i'm using yui for compressor 
end 

설정 응용 프로그램/자산 TS, 글꼴, CSS, 이미지 등),이 같은 내 :

app/ 
    assets/ 
    fonts/ 
    images/ 
    javascripts/ 
    stylesheets/ 

과 CSS에, 글꼴 URL, 이미지 URL 또는 자산 URL을 같은에 URL 헬퍼를 변경

. 자세한 내용은 https://github.com/rails/sass-rails에서 확인할 수 있습니다. 어쩌면 스테이징 서버를 사용하여 앱이 작동하는 고정 자산에 대해 애셋 파이프 라이닝이 제대로 작동하는지 확인해야합니다. 또한 javascript 파일이 두 번 이상로드되었는지 확인하십시오. (자산 파이프 라인으로 업그레이드 할 때 두통을 겪었습니다.)

희망이 도움이됩니다.

3

너무 늦었, 우리가 자산 파이프 라인이 발견 한 트릭은 여전히 ​​공용 폴더에있는 많은 CSS와 JS를 가진 활성화되어 있지 않다면 정적 파일의 "이전"태그 도우미를 유지하기 위해

자산 파이프 라인에 의해 재정의되기 전에 별칭을 지정합니다. 우리는 application.rb에 require 'rails/all' 위의이 조각을 추가

require 'rails' 

ActiveSupport.on_load(:action_view) do 
    alias_method :without_asset_pipeline_js, :javascript_include_tag 
    alias_method :without_asset_pipeline_css, :stylesheet_link_tag 
    alias_method :without_asset_pipeline_img, :path_to_image 
end 

따라서, 우리의보기에, 우리는 여전히 그들에 액세스 할 수 있습니다. 그러나 우리는 모든 태그를 변경해야 할 것입니다 ... 그래서 우리는 "오래된"태그를 복원하기 위해 초기화기를 추가하고 "asset_"(또는 무엇이든)로 "새로운"태그를 접두사로 붙입니다. 이제 정적 자산 파일을 공개/자산 파이프 라인으로 관리 할 수 ​​있습니다.

지금, 우리는 (!이 이미지와 함께 작동하지 않는다는 점을 제외)이 접근 방식에 문제를 충족하지 못했지만, 그것은 미봉책 보이더라도 우리는이 나를 위해 일 시작 ...

+0

있습니다. 이 기능이 내장 되었으면 좋겠습니다. – quoo

관련 문제