Про assets_pipeline в rc3

47 views
Skip to first unread message

rwz

unread,
Oct 6, 2011, 4:28:18 AM10/6/11
to RubyOnRails to russian
Я тут обновился до 3.1.1.rc3, вцелом все стало кучеряво кроме одного
момента, который мне совершенно непонятен.

Они там короче добавили такую штуку, что rake assets:precompile теперь
еще генерит ассеты без дигестов. То есть вот был у меня apps/assets/
javascripts/application.js, туда спрокетсами собиралось все подряд. И
precompile мне выдавал файлик /public/assets/application-
cb377d3f8e62fc22d0926361c86f9850.js и его gz версию. А начиная с rc3,
он теперь туда кладет еще и application.js с тем же содержимым. Оно с
одной стороны понятно зачем вообще, а с другой -- эта хуйня мне ломает
девелопмент, поскольку pow радостно начинает отдавать прекомпиленные
файлики оттуда, вместо того, чтобы их пересобирать на изменения.

Я ассеты генерю перед деплоем каждый раз руками сам, чтобы сервак этим
не напрягать. Теперь получается мне надо сгенерить ассеты, пушнуть их
в гит, продеплоиться, затем удалить и только тогда продолжать
девелопмент. В репу по 10 раз в день будут приезжать 10 мегабайт
ассетов, а следующим коммитом уезжать. Тупо как-то. И неудобно.

Есть чо посоветовать по данной проблеме?

Zabazhanov Arkady

unread,
Oct 6, 2011, 4:49:45 AM10/6/11
to ror...@googlegroups.com
rake assets:precompile можно вызывать на серваке капистраной. да и нужно, я думаю.

6 октября 2011 г. 12:28 пользователь rwz <r...@duckroll.ru> написал:
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

rwz

unread,
Oct 6, 2011, 4:57:53 AM10/6/11
to RubyOnRails to russian
Ну, можно, конечно. Но я сомневаюсь насчет нужно. Я раньше так делал --
собирается мучительно долго, сервак кряхтит. Плюс, каждый апдейт
therubyracer'а очень дохуя тормозил деплой.

Собирать на дев-тачке прикольнее, тем, что
а) собираешь когда надо, а не всегда
б) быстрее
ц) на сервак лишнего exec-js-related говна и гемов ставить не надо

Sergey Kojin

unread,
Oct 6, 2011, 5:42:07 AM10/6/11
to RubyOnRails to russian
kumade для того чтобы деплоить ассеты на heroku делает отдельную
ветку, туда комитит генереные ассеты, пушить еще с force, и потом
удаляет локально, получается главный репозиторий не засирается

хотя просто генерить capistrano на серваке логичнее если есть
возможность

Dmitry Galinsky

unread,
Oct 6, 2011, 7:23:09 AM10/6/11
to ror...@googlegroups.com
> Теперь получается мне надо сгенерить ассеты, пушнуть их
> в гит, продеплоиться, затем удалить и только тогда продолжать
> девелопмент.

Можно с помощью capistrano генерить ассеты при деплое на локальной машине и заливать их на сервер

rwz

unread,
Oct 6, 2011, 7:28:15 AM10/6/11
to RubyOnRails to russian
Во, это уже интереснее. А куда почитать на эту тему не подскажешь?

Dmitry Galinsky

unread,
Oct 6, 2011, 7:42:12 AM10/6/11
to ror...@googlegroups.com
> Во, это уже интереснее. А куда почитать на эту тему не подскажешь?
>> Можно с помощью capistrano генерить ассеты при деплое на локальной машине и заливать их на сервер


Почитать доки https://github.com/capistrano/capistrano/wiki

Схематично будет так:

task :assets:precipice do
system "rake assets:recompile" # генерируем assets
manifest = YML.load(File.read("public/assets/manifest.yml")) # получаем список ассетов в массиве
manifest.each do |file|
asset_name = file.keys.first
asset_file file[asset_name]
asset = File.read("public/assets/#{asset_file}") # читам ассет
pit(asset, "<path_to_assets>/#{asset_file}") # заливаем на сервер
end

.. не забывам залить на сервер manifest.yml ...
end

Dmitry Galinsky

unread,
Oct 6, 2011, 7:43:17 AM10/6/11
to Dmitry Galinsky, ror...@googlegroups.com
> task :assets:precipice do
> system "rake assets:recompile" # генерируем assets
> manifest = YML.load(File.read("public/assets/manifest.yml")) # получаем список ассетов в массиве
> manifest.each do |file|
> asset_name = file.keys.first
> asset_file file[asset_name]
> asset = File.read("public/assets/#{asset_file}") # читам ассет
> pit(asset, "<path_to_assets>/#{asset_file}") # заливаем на сервер
> end
>
> .. не забывам залить на сервер manifest.yml ...
> end

s/pit/put/

rwz

unread,
Oct 10, 2011, 12:34:06 AM10/10/11
to RubyOnRails to russian
Это как-то сурово и слишком брутально, имхо. Впрочем, главное конечно,
чтобы работало.

Вообще идеальный вариант мне видится какой-нибудт в стиле создавать
временную ветку в гите из ветки с текущим деплоем, в ней собирать
ассеты, пушить, деплоиться из нее и после этого ее сносить.

On Oct 6, 6:42 pm, Dmitry Galinsky <dima....@gmail.com> wrote:
> > Во, это уже интереснее. А куда почитать на эту тему не подскажешь?
> >> Можно с помощью capistrano генерить ассеты при деплое на локальной машине и заливать их на сервер
>

> Почитать докиhttps://github.com/capistrano/capistrano/wiki

Reply all
Reply to author
Forward
0 new messages