Как стать автором
Обновить

Комментарии 104

подкиньте, пожалуйста, идею, как перевести Asset Pipeline (и стоит ли).
Конвейер ресурсов?
pipeline здесь относится скорее не к коду или вычислительному процессу, а к процессу использования пользователем
Там именно сборка происходит. SСSS и CoffeeScript компилируются в css и js и собираются в один файл.
если посмотреть по ссылке выступление DHH, он рассказывает, что главным нововведением для этой фичи стали пустые папки. т.е. sprockets, scss, coffee — это всё конечно хорошо, и отключается. а главное — это то, что генератор теперь генерирует ресурсы систематизированно.
Препроцессор ресурсов.
С появлением Рельс 3.1 фронтендерам в принципе больше нечего стало желать ) Ну может Компас еще из коробки
у compass довольно узкая направленность, я думаю, что для ближайших версий на SCSS они ограничатся.
в 3.2 намечается сильное упрощение стека middleware, ускорение, а так же вроде бы это
а так же вроде бы это
Sorry, your browser doesn't support pjax :(
Кстати, странная формулировка, ведь pjax — это не какой-то web-стандарт, и браузер его не может поддерживать. Это pjax не поддерживает мой браузер.
Это браузер не поддерживает pushState/replaceState.
гм, может быть и не встроят. просто DHH, помнится, твиттил о нём, а мой Firefox 4 не допустил у меня мысли, что он не кросс-браузерный.
А как же haml? Правда, DHH не хочет)
Точно, и haml. Я к нему так привязался, что даже забыл, как доставлял его отдельно ) А почему не хочет, кстати?
haml не отвечает его эстетическим пристрастиям. Он понимает, какую роль haml играет для Rails, но не нравится он ему, и все тут) По той же причине он выбрал SCSS, а не SASS. Подробнее тут (англ.).
Благодарю )
Логика есть: всегда должна быть возможность вставить в html-шаблон, или css-шаблон нативный html/css-код.
я читал и ещё про одну логику (правда которая, может быть, была самодеятельностью фанатов): CoffeeScript и SCSS позволили систематизировать и абстрагировать элементы приложения. Haml же ничего не абстрогирует (только выглядит лучше), а систематизация и так была в html.erb
Насколько я знаю CoffeeScript ничего не систематизирует и не абстрагирует. Разбивкой на сущности занимается генератор рельсов, а объединением — Sprockets. Точно так же мог бы и работать Javascript.

В Compass есть средства для систематизации — инклюды, партиалы, но пока нативно они не поддерживаются.

В любом случае, упорядочиванием сейчас преимущественно занимается Sprockets.

P.S. Если бы фреймворк назывался Python on Rails, будьте уверенны Haml и Sass были бы там уже по умолчанию :)
из моего уровня знаний CoffeeScript (только недавно его решил посмотреть), он как минимум организует require
Ок, профтыкал. Сам недавно его начал изучать :)
Полопатил документацию ещё раз. На уровне языка там require нет…
//= require 'smth.coffee'
или это sprockets так помогает?
//= это синтаксис спроектса. Он же asset packager…

А вот sass умеет нативным образом инклудить файлы через директиву @import
в haml можно вставлять куски html
в сoffeescript можно вставлять куски js
в sass можно делать nested @import css файлов
потому что ему нравится, когда шаблоны синтаксически отличны от основного кода. и я с ним согласен
Ну HAML-то, по моему, синтаксически на ruby не сильно похож, при том в два раза лаконичнее чистого HTML
Лаконичность весьма условная. С помощью zen-coding можно писать так же быстро, как и через haml. Но обучать верстальщиков Haml'у это явно преступление против человечества )
Лаконичность haml весьма конкретная, особенно если оформление верстки уводить в sass\css. Zen-coding даст написать, но не даст посмотреть.

Меньше кода + четче структура == хуже?

P.S. Все, что хамл не умеет он предлагает делать через фильтры.
так-то хамл гораздо больше похож на руби, чем хмтл
На пайтон он похож… Ну нет ничего в нем от руби…
я о том, что хамл больше похож на язык программирования, чем на язык разметки
лично для меня главный минус haml'а тот же, из-за которого я в своё время на пайтоне не осел — значащие отступы.
В нормальном редакторе (например, в настроенном vim) никакой проблемы в отступах нет. Они сами формируются редактором, равно как на лет проверяются ошибки.

Хотя на вкус и цвет, но мне лично HAML очень понравился.
проблема не в редакторе, а в том, что мне не позволяют оформлять мой код как я хочу.
Стиль кодирования в любой команде всегда является чем-то синергичным и требующим некоторых компромиссов от участников.

Мне, к примеру, пофиг на стиль кодирования, лишь бы он был единым.
Меня по этому немного coffescript колотит, потому что его стиль сильно отличается от ruby
Используйте JavaScript, он ведь так сильно похож на Ruby.
если это саргазм, то в coffescript добивает significant widespace
на волне недавнего еле закончившегося холивора «табы vs пробелы» все стали слишком критично понимать эту фразу.
единый корпоративный стиль оформления кода тоже имеет свои пределы, и когда ваши шаблоны из-за этого корпоративного стиля превращаются в простыню из пирамидок, лучше пожертвовать единообразием для повышения читабельности.
Не надо переводить все подряд. Думал что карта сущностей — это что-то новое, а оказалось тот же identity map. Людям всеравно потом придется работать с англ. терминами.
Это извечный спор, какие понятия переводить, а какие нет.

Есть адепты принципа «переводим ВСЕ». Они переводят слово фреймворк как каркас и бинарный лог называют двоичным журналом. Есть люди, которые наоборот, оставляют все термины непереведенными. В итоге их текст состоит наполовину из русских и наполовину из английских слов — тоже выглядит странновато.

В основном стараются держаться какой-то золотой середины. Проблема в том, что понятие середины у каждого свое, кому-то идентити мап, кому-то карта сущностей. Думаю, не стоит к этому цепляться, поскольку всем все равно никогда не угодить.
Тут такого спора нету. Человек вышедший за пределы этой статьи ничего не сможет найти. Информации по «картам сущностей» в рельсах кроме как в этой статье нигде нету. Чтобы переводить термины, нужно чтобы была актуальная информация на русском, а ее нету. В 95%, если не больше, я пользуюсь только источниками на англ. языке, так как альтернатив попросту нету.
для всех терминов типа «карты сущностей» я подписал рядом в скобках оригинальный вариант.
Ну вот это правильный вариант.
Думаю лучше испльзовать переведенную версию + оригинал.
К тому же, не «карта сущностей», а тождественное отображение, блин.
identity map -> тождественное отображение вводит плохо говорящих по-английски в когнитивный диссонанс. карта сущностей и по смыслу подходит, и понятно сразу о чём речь.
Спасибо за перевод! Ror 3.1 — торт.
3.2 — хороший торт, 3.1 вроде как экспериментальный, мост между 3.0 и 3.2. В 3.2. будет окончательно отменены некоторые штуки из 2.х ветки. Или я что-то путаю?
помнится, они ещё в 3.1 обещали выкинуть кучу вещей, но ничего об этом так и не услышал. так что возможно, большая чистка будет в 4.0
Со временем и его попробуем)
Арр, буду переписывать скрипты с Prototype на jQuery :)
А руководство по переходу 3.0 -> 3.1 планируется?
Одно неудобство заметил: можно ли будет конвертировать уже существующие пароли в has_secure_password?
> буду переписывать скрипты с Prototype на jQuery
это совсем не обязательно. чтобы заменить jquery на prototype в 3.1 надо будет всего лишь сделать
# gem 'jquery-rails'
gem 'prototype-rails'
;)

по поводу рукаоводства — насколько я понял, вся документация ещё готовится, да и интернеты будут переполнены самодельными гайдами, как это было с 2.3 -> 3.0

существующие пароли, если я вас правильно понял, можно будет конвертировать только если вы их храните как plain text. если вы их тоже зашифровали, то переопределить алгоритм шифрования (ну или соль-перец) будет нельзя, там свой через BCrypt и он hard-coded.
Пароли зашифрованые. Блин, надеюсь какое-то решение будет…
На счет jQuery/Prototype ниже ответил.
Это необязательно, если все, что использовалось — стандартный UJS, а что если реально много кода на самом Prototype? Хотя дефолность не мешает использовать Prototype и дальше.
так а какая разница между использованием UJS и самого prototype? главное prototype.js стоит в зависимостях.
А зечем переписывать? prototype-rails же. У меня просто тоже такая задача стоит, решил, переписывать смысла нет.
Ибо jQuery становится rails-way. Да и возможностей и расширений у него больше в разы.
А все благодаря кому? Правильно! — Ехуде Катцу! Уважуха ему за JQuery, Rails и Bundler.
Вот HTTP-Стриминг это действительно killer feature. Интересно в других фреймворках есть что-то похожее?
Вообще радует, что при выпуске новой версии Rails разработчики уделяют столько внимания вопросам производительности.
killer feature это сломанный rake 0.9.0, который еще и автоматом ставится. каждый раз пока приходится откатывать до 0.8.7
ну вы же, надеюсь, в production'е так часто гемы не обновляете :)
нет:) и вообще в такие моменты понимаешь какая прелесть этот rvm
Тут не просто обновление гема… тут немного серьезнее.

Если гем rake 0.9.0 уже стоит в системе, он не дает запускаться rake, даже если в приложении в gemfile стоит конкретная версия rake.

Причем даже обычный gem uninstall не всегда спасает. Я лично ручками чистил папку .rvm от следов 0.9

Хотя через bundle exec все отлично работает, кстати.
просто rake прописывается в ваше системное окружение при установке, поэтому просто так её не снесёшь.
rails и rake пишут две разные команды, поэтому такое вполне могло случиться.
щас на самом деле все держат руку на пульсе, патч обещали в кратчайшие сроки.
Временный патч можно руками сделать, как написано здесь в первом ответе.

Пара строк в Rakefile и все работает и с 0.9.0.

Но я предпочел откат сделать :)
Не проверял пока, но в русской гуглогруппе говорят, что при таком хаке мертвыми остаются огурец и rspec.
да, точно, огурец лежит, рспек вроде работает.
я тоже чистил руками (стояла бета1) сегодня решил накатить кандидата, и снова получил 0.9.0. забил и решил делать bundle exec
Кстати, кто подскажет. Я перевел 3.0 проект на 3.1 бету, сейчас до rc апгрейдился.
Но когда я пишу скрипты в assets/javascripts/*.coffee.js они с завидным постоянством не обновляются.
Файл application.js, который отдает rails сервер и не думает обновлятся ни под каким предлогом.

Никто с таким не стыкался?
А где обещанный rspec по дефолту?
да вроде писали, что будет
не совсем пойму, о каком усложнении он все говорит. помоему rspec-овские тесты в разы читабельнее и понятнее, чем testunit
читабельнее — может быть. но точно не писабельнее.
на самом деле и читабельнее — вопрос спорный. для меня меньше слов — лучше читабельность. а когда assert превращается в should_be_true, то это уже читабельнее может действительно быть только для заказчика. а лично у меня в практике заказчик ни разу тесты не читал.
все это дело вкуса
вкус вкусом, но на Test::Unit у меня тесты размером файлов и LoC'ами в три раза короче, чем RSpec c огурцом…
ожидал этот вопрос.
не было и не будет никогда RSpec по дефолту. вся 37signals очень его не любят и вполне обоснованно
знал, что dhh не любит, но что все 37signals — удивило
Вам не кажется, что у них у всех какая-то странная ментальная связь? =)
значит опять интернеты наврали =/
ой, ответ к комменту выше
Интернеты не наврали, просто это dhh на 1е апреля пошутил…
и правда, дату не глянул :(
Я повелся и ретвитнул тогда :( Правда, его следующий твит сразу показал мне, какой я дурак.
да, он там ещё и шутил, что они Affirmit! выбрали, самый чувственный тест-фреймворк в мире :)
Как всё вкусно-то :)
Эх, compass по прежнему не работает с 3.1 версий, а так хочется мигрировать in progress проект.
Есть способ заставить работать
Даже без этого хака все работает если использовать compass, tilt, sprockets из мастер веток.
Действительно, в RC1 все заработало без хаков, ура!
Теперь поддерживать безопасность приложений проще, чем никогда. — ась?
«ever» это не никогда, это «когда бы то ни было». Впрочем, так писать в переводе тоже не стоит.
НЛО прилетело и опубликовало эту надпись здесь
а что, много других фреймворков умеет?
НЛО прилетело и опубликовало эту надпись здесь
быстрое гугление мне показало, что Prepared statements сейчас поддерживает только Zend и Yii в вроде последней (1.1.7) версии.
Иногда ещё бывает, что параметризацию запросов или их подготовку на стороне клиента называют тем же термином.
НЛО прилетело и опубликовало эту надпись здесь
насчёт propel не знаю, но по doctrine только что читал форум-тред, о том, что логгер БД показывал, что на самом деле никакого PS не происходит.
алсо, был где-то гайд как включить PS в адаптере MySQL.
Однако отсутствие в рельсах PS было аргументировано: AR в 3.0 устроена так, что вы можете изменив 3 строки в конфиге перейти к примеру MySQL -> PostgreSQL -> Oracle -> MongoDB -> что угодно ещё и в любой последовательности. Введение таких DB-specific вещей убьёт абстракцию.
НЛО прилетело и опубликовало эту надпись здесь
> Пойду зарепортаю багу, что ли.
Вы только перепроверьте, что оно до сих пор так, вдруг я не те форумы читаю :) СУБД вроде MySQL.
> Ну так не убило же.
Просто они только в 3.0 сменили архитектуру, сделав все railties (AR, ActiveSupport, ActionController и т.п.) модульными и независимыми и добавив достаточно абстракций, чтобы это стало возможно. Видимо, им нужно было время, чтобы допилить. Во всяком случае я знаю немногих людей, которые садятся за Rails ради вертикальной производительности :)
А тем временем Rails 3.1.0.rc3 has been released!

CHANGES
Here are some of the major changes to the RC branch:

mailto SafeBuffer fixes
escape_javascript SafeBuffer fixes
Multiple sources in sprocket helpers.

Очень просят писать репорты.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации