2012-06-24 2 views
3

У меня довольно сложное веб-приложение Rails, которому почти 4 года :). Он живет со многими клиентами, использующими его ежедневно, поэтому я должен быть немного менее кавалером, когда я внес в него радикальные изменения.Инкрементное обновление до конвейера Rails

Мне удалось перенести его на рельсы 3.2.2 и все еще функционировать, но есть много кода, который по-прежнему использует Scriptaculous, вызовы Ajax прототипа (например, для разбивки на страницы) и т. Д.

Я хочу медленно перенести все это на использование jQuery UJS и Coffeescript, но я должен делать эти изменения по частям, предпочтительно по одному контроллеру за раз в нескольких «выпусках».

Но я вижу, что включение активов является логическим переключателем.

Как вы перенести существующий код на конвейер активов, не нарушая много кода? Какие меры предосторожности я должен предпринять?

ответ

2

Эти эпизоды railscasts мне очень помогли.

  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

Резюме:

Установите Gemfile

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

переместить свои активы (JavaScrip Т.С., шрифты, CSS, изображения и т.д.) в приложение/активы, шахта, как это:

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

и на CSS, изменить помощник URL-адрес, чтобы что-то вроде шрифта URL, имидж-URL или активов-URL , Вы можете найти более подробную информацию здесь, https://github.com/rails/sass-rails. Возможно, вам захочется использовать промежуточный сервер, чтобы проверить, работает ли конвейерная обработка активов, по крайней мере, для статических активов, которые выполняет ваше приложение. Также убедитесь, что файл javascript загружен более одного раза. (Это доставляло мне головную боль раньше, когда я перехожу к конвейеру активов).

надеюсь, что эта помощь.

3

Если это не слишком поздно, вот это трюк, мы обнаружили, чтобы трубопровод активов включен, все еще имея много CSS и JS в общей папке:

Для того, чтобы сохранить «старые» помечать хелперы для статических файлов , мы их называем, прежде чем они будут переопределены конвейером активов. Добавим этот фрагмент над require 'rails/all' в application.rb:

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

Смежные вопросы