Статьи

Подкаст SitePoint №103: Руби достаточно стар, чтобы пить

Эпизод 103 подкаста SitePoint теперь доступен! На этой неделе Луи Симоно ( @rssaddict ) беседует с Питером Купером ( @peterc ) и Джейсоном Сейфером ( @jseifer ) из The Ruby Show о последних событиях во вселенной Ruby. Мы говорим о Rails 3.0, Ruby за пределами Rails и бессмертном вопросе о том, может ли Rails масштабироваться.

Слушай в своем браузере

Сыграйте этот эпизод прямо в вашем браузере! Просто нажмите оранжевую кнопку «Play» ниже:

Скачать этот эпизод

Вы также можете скачать этот эпизод в виде отдельного файла MP3. Вот ссылка:

Ссылки, упомянутые в этом эпизоде

Стенограмма интервью

Луи: Итак, с нами сегодня на подкасте Питер Купер и Джейсон Сейфер. Привет Питер.

Питер: Привет, как дела?

Луи: Очень хорошо. Привет Джейсон.

Джейсон: Привет, как ты?

Луи: Я очень хорошо, как ты?

Джейсон: У меня все хорошо.

Луис: Хорошо, хорошо, Питер и Джейсон в настоящее время являются ведущими The Ruby Show, который является подкастом обо всех вещах Ruby, поэтому я подумал, что мы представим их сегодня на шоу, чтобы просто рассказать о том, где находится Ruby, что происходит в Сообщество Ruby, как развивается Ruby on Rails; 3-я версия фреймворка была выпущена сравнительно недавно, поэтому я думаю, что это хорошая возможность получить обновление от сообщества Ruby для наших слушателей, которые некоторые из вас могут быть в Ruby, но многие из вас не так просто, чтобы увидеть, где что-то происходит в. Но прежде чем мы углубимся в это, вы, ребята, хотите немного рассказать о себе, о том, как вы это сделали, как вы попали в Ruby, как вы начали подкастинг, что вы делаете в данный момент; так Питер?

Питер: Да, я в значительной степени программировал с тех пор, как мой папа в 80-е годы давал мне советы по поводу старых компьютеров Micro, которые у нас были в Великобритании в начале 80-х, основным из которых был машина под названием BBC Micro, которая, я не думаю, когда-либо делала это из Великобритании, но это было что-то очень большое здесь, так что я научился играть с этим и с программой, и так далее в очень раннем возрасте, и Я вроде, вы знаете, это было просто моим хобби, когда я рос вместе с Basic, а затем с C, затем с Pasquale, я вроде как вернулся на передний план; Я как бы пошел с C, а потом начал просто двигаться вниз и вниз по цепочке. А потом я занимался Perl около восьми лет, что, вероятно, довело меня до грани самоубийства, прежде чем появился Руби (смех). Да, примерно в 2004 году я вступил в команду с Руби, и я действительно не хотел прыгать на доске вначале, потому что к этому моменту программирование стало для меня немного негативным, но оно полностью меня затянуло и полностью победило. и я действительно наслаждался этим с тех пор. И с точки зрения подкастинга, это определенно не то, что когда-либо было на моем радаре, как что-то, что можно было бы сделать как серьезное занятие, но тогда, в прошлом году или около того, я знал людей, которые были вовлечены, казалось интересным проводить интервью вроде это и появилась возможность работать с Джейсоном на The Ruby Show, и я просто … мы всегда хорошо ладили, так что это казалось хорошей возможностью для небольшого сообщества, а не сообщества, немного комедии в старом Рубиновая сцена, поэтому мне пришлось прыгнуть на нее.

Луи: Хорошо, это хорошо. Как насчет тебя, Джейсон?

Джейсон: История, похожая на историю Питера, я программировал всю свою жизнь, я начал, когда мне было около шести лет, хотя как раз наоборот, я начал с Basic, просто как будто мой отец занимался программированием, а затем со временем Затем я перешел на PHP, написал кучу Perl, не смог прочитать практически ничего (смех), а затем, вероятно, перед выпуском Ruby on Rails 1.0, я действительно начал изучать Rails, а затем занимался консалтингом по веб-разработке с Рельсы и были там с тех пор.

Луи: Точно. Итак, я думаю, что следующее, о чем я просто хотел кратко поговорить для нашей аудитории, скажем, для кого-то, кто, возможно, слышал о Ruby или слышал о Ruby on Rails, можете ли вы дать нам краткое изложение того, почему Ruby особенный, что привлекло вас к это и что такого захватывающего в Rails, и почему вы, ребята, оба так увлеклись?

Джейсон: Питер, ты хочешь пойти первым?

Питер: Да, я возьму конец Ruby, а затем позволю Джейсону, возможно, еще немного углубиться в сторону Rails. Да, в Ruby мне действительно нравится то, что люди любят называть его чисто объектно-ориентированным языком, я бы не сказал, что он на 100% чистый, но он чертовски близок по сравнению с другими языками, которые я использовал. , И это, по сути, означает, что почти все, что у вас есть в Ruby, данные любого типа или даже такие вещи, как вы просто набираете число, можете вызывать для него методы, так что все в некотором роде действует как объект. Да, я имею в виду, что это просто привлекательно, потому что у вас этого никогда не было, у вас нет значительной двусмысленности, и вызываете ли вы метод для чего-то или у вас есть функция или что-то подобное, как в Python, например, в Ruby вы можете просто взять строку и спросить ее длину, вы просто делаете все через интерфейс этого метода, и это действительно мне нравится. И причина этого в том, что фон для Руби и создателя его зовут Юкихиро Мацумото, но мы все знаем его как Маца; он начал в 1993 году, и ему было немного скучно с некоторыми языками, с которыми он работал, и хотел сделать что-то, что, я думаю, он использовал слово «радость», он хотел, чтобы это было весело использовать, что-то, что он нашел бы действительно удовольствие от использования. Таким образом, он придумал некоторые идеи с некоторыми другими людьми, придумал название Ruby, основанное на успехе Perl, но продвинулось вверх по алфавиту, и поэтому он всегда стремился к тому, что это должно быть радостно, это должно быть приятным, но также он верит в то, что называется принципом наименьшего удивления, поэтому, если вы читаете кусок кода, должно быть достаточно очевидно, что он делает. Конечно, это не относится к Perl, как сказали и я, и Джейсон, но вы действительно можете многое сделать с Ruby, потому что он очень динамичен и гибок, вы можете переписать, как в Ruby работают почти внутренне, так что вы можете на самом деле переопределите, как функцию сложения, скорее метод сложения, на целые числа или что-то еще, и сделайте так, чтобы способ сложения чисел полностью изменился, так что вы действительно можете обойтись и с Ruby таким же образом. Но, в основном, если вы следуете соглашениям, а Rubyists очень хорошо следуют соглашениям и лучшим практикам, если вы следуете им, то большая часть кода на Ruby очень удобна для глаз, очень проста для чтения, и это то, что действительно привлекает Я пришел из Perl, где даже ваш собственный код может быть непонятным в течение нескольких недель.

Луи: Да. Таким образом, Ruby был разработан как этот язык сценариев, который, как вы сказали, должен был быть радостным и действительно объектно-ориентированным, а потом, я думаю, что-то произошло, когда люди вдруг начали использовать его в Интернете, и я думаю, что Ruby on Rails, вероятно, был самый большой водитель этого. Итак, Джейсон, вы хотите просто рассказать людям о Rails; Я знаю, что многие люди, вероятно, достаточно хорошо знакомы, по крайней мере, с идеей Rails, потому что она вдохновила множество фреймворков на других языках, поэтому в PHP есть CakePHP, который очень тесно связан с Rails, но, возможно, просто немного предыстория того, как это произошло и почему вы думаете, что Rails — это колени пчел.

Джейсон: Итак, до того, как был выпущен Rails, определенно происходило много веб-разработок, я имею в виду Интернет, преобразованный в богатые интернет-приложения, множество веб-разработок; до Rails было много церемоний и вещей, которые нужно было переделывать несколько раз при запуске нового приложения. Итак, Rails приходит и говорит: эй, есть много вещей, которые мы делаем большую часть времени, мы можем упаковать это, упростить использование, взять на себя много церемоний из-за написания веб-приложения, поэтому вещи, которые раньше занимали много времени, ну, в основном, это сделано для вас; вместо того, чтобы иметь много конфигураций в приложении Java, было бы много соглашений.

Луи: Такие вещи, как сопоставление набора URL-адресов с методами в ваших классах или просто взаимодействие с базой данных, это вещи, о которых в Rails вам даже не приходится думать большую часть времени.

Джейсон: Точно. Вы знаете хороший пример, допустим, вы хотите — если у вас есть таблица книг в базе данных, вы можете просто вызвать книгу классов и расширить ее из ActiveRecord, а Ruby и Rails сделают для вас многое, предоставив вам целую кучу очень простые способы сделать запрос к базе данных, и я имею в виду, что объектно-реляционные картографы не были новыми, но Rails позволил им очень, очень легко начать работу и начать работать продуктивно.

Луис: Хорошо, теперь давайте немного поговорим о Rails 3. Я думаю, что есть много людей, которые слушают Rails, знакомы с этой идеей реляционного отображения объектов и всего того, что Rails и другие фреймворки для веб-разработки делают это возможным, но, возможно, только быстро, когда появляется новый релиз; если вы не используете Rails активно, это не что-то, вы знаете, я не замечаю, когда выйдет новый релиз Django, поэтому я не знаю, что нового. Так что, может быть, просто поговорим о том, что нового в Rails 3 и почему — я имею в виду, что это выглядит как довольно важный релиз из всего, что я видел, так что, возможно, вы можете немного поговорить об этом.

Питер: Я полагаю, что Джейсон, вероятно, знает гораздо больше о некоторых повседневных проблемах с ним, но сначала я хотел осветить лишь одну вещь: Rails 3 был почти полностью переписан в некотором смысле, вы знаете, Иехуда Кац был основным движущим фактором, он был вызван слиянием Rails-Merb, как его называли, но это было не столько слияние, сколько похоже на то, что давайте возьмем Иегуду и некоторых людей, которые работали над Merb. и реализовать некоторые из их идей о том, как создать веб-фреймворк, как они это сделали с Merb.

Луи: Просто немного истории, Merb — еще одна веб-инфраструктура Ruby.

Peter: Это так и было, но сейчас это не так важно, в том смысле, что он был как бы объединен с Rails, но есть еще отдельная сборка Merb, но она не особенно популярна, ее держат по причинам обслуживания. действительно. Но они сделали такое слияние, и это привело Иегуду Каца и некоторых других людей на борт, и он как бы взял много модульности, которая была в Merb, и запек ее в Rails с нуля, так что пришлось переписать много основные вещи, такие как система маршрутизации, изменились, и есть все эти крошечные вещи, которые есть внутри Rails, но все они должны были быть существенно изменены, чтобы справиться с этой модульностью, и это действительно удивительно, что он сумел скоординировать и осуществить это хорошо, но сделайте это, он сделал, и у нас теперь есть Rails 3, но Rails 3 действительно, вы знаете, многие API выглядят очень похоже на поверхности, но под капотом это почти совершенно новая вещь.

Джейсон: И это то, что действительно удивительно, когда вы на самом деле можете использовать его и кодировать приложение на Rails. В качестве примера предыдущей версии Rails, Rails 2, существует минимальное переписывание, которое вам потребуется для обновления Rails 2 до Rails 3, потому что, как сказал Питер, API в значительной степени очень похож, поэтому я имею в виду, что я портировал пара приложений, и это может быть где-то от четырех часов до рабочего дня, на самом деле не так плохо, как вы думаете для того, что по сути является переписыванием целого фреймворка. Но с учетом вышесказанного одна из вещей, таких как Питер говорил о Merb, и Merb был своего рода конкурирующим фреймворком для Rails, но у конкурирующих в этом смысле были разные идеи о том, как подходить к веб-разработке с полным стеком, так, где Rails будет предоставив вам весь этот гигантский скелет и приложение, Мерб предоставил вам такую ​​возможность, но позволил вам разбить ее на несколько частей, чтобы вы могли сказать, что мне не нужно все это, просто дайте мне эти несколько частей, и я смогу построить свое приложение. Теперь, в эти дни, если вы собираетесь написать новое приложение на Rails 3, оно даст вам все, что нужно для начала работы, но у вас есть такая же возможность выбрать более модульные части.

Луи: Да, верно. И поэтому для того, кто просто скажет, что он сидит снаружи и смотрит на Rails 3, у вас есть такая модульность, где вы могли бы привести пример того, что вы могли бы поменять на другой компонент, если бы вы начали Rails-приложение; Какие типы вещей, например, есть ли альтернативные модули, которые вы часто используете в своей разработке?

Джейсон: Да, хороший пример — это среда тестирования, которую используют многие люди. Rails поставляется в комплекте с тестовым модулем, но сообщество Ruby довольно много занимается тестированием, и каждые три с половиной года выпускается новая среда тестирования. четыре недели, и вы можете довольно легко поменять их. Другое дело, что ORM по умолчанию называется Active Record, и если вы хотите выбрать что-то вроде MongoDB, вы можете легко добавить что-то вроде Mongo Mapper, чтобы напрямую общаться с MongoDB, и Rails легко адаптируется к нему.

Луи: Я думаю, это было возможно в предыдущих версиях Rails, многие люди использовали RSpec с Rails 2, но вы говорите, что Rails 3 только что сделал эту модульность более встроенной, чтобы действительно разработан, чтобы позволить вам вынуть любой компонент, который вам не нравится, и заменить его другим компонентом, который вы предпочитаете.

Джейсон: Точно.

Луи: Вы сказали, что все в порядке, так что сообщество Rails активно занимается тестированием, и каждые три с половиной-четыре недели выпускается новая среда тестирования, теперь вы, возможно, немного пошутили насчет этого числа, но у меня такое впечатление По мнению сообщества Rails, мы вдруг все делаем вот так. Так что это может быть немного пугающим, тогда как раньше, если вы взглянули на Rails еще в ранние времена Rails 1 и Rails 2, вы пришли к нему, о, вот как мы делаем вещи в Rails, это то, как вы создаете пример приложения, очень просто, изучите его и создайте свои приложения. В настоящее время кажется, что сообщество сильно выросло, и у каждого есть свои особые способы, которыми они любят заниматься, поэтому это может пугать кого-то, кто приходит к нему извне. Что бы вы посоветовали кому-то, если кто-то хочет начать разработку в Rails, и у него возникает такое ощущение, что у всех в сообществе разные представления о том, как мне все делать, так как мне найти лучший путь? сделать что-то одно — или действительно начать работать с Rails.

Джейсон: Хорошо, в Rails есть множество встроенных настроек по умолчанию, которые вы можете получить с нуля и просто начать, вы знаете, использовать настройки Rails по умолчанию и бум, что вы готовы. На сайте Rails Guides есть много отличной документации.

Луи: Да, я видел это, это было действительно огромное усилие по документированию, идущее от того, что было раньше; Я считаю, что Rails Guides — это часть документации.

Джейсон: Они проделали огромную работу с этим, но да, я имею в виду, что он проведет вас через все, что вам нужно для создания приложения на Rails, а затем, как только вы в него разберетесь, вы сможете больше читать и самостоятельно принимать решения о что вы хотите использовать, но вот почему Rails дает вам хотя бы хорошие настройки по умолчанию, я имею в виду, что вы не собираетесь запускать Rails и говорите: эй, я понятия не имею, что делать, я не могу работать Как будто для вас выбраны хорошие вещи, по умолчанию вы получаете Active Record, вы получаете тестовый модуль, и я считаю, что по умолчанию, который поставляется с Rails, поскольку библиотека JavaScript является Prototype в наши дни, но вы определенно можете начать.

Луи: Так по-прежнему ли Rails по умолчанию использует Prototype?

Джейсон: Да.

Луис: Хорошо, это действительно интересно, потому что я не думаю — это, я думаю, интересный выбор, потому что многие люди начали использовать jQuery гораздо больше, как вы знаете, в последние два года, так что, по вашему мнению, побудило вас принять решение? Это потому, что сообщество Rails настолько знакомо с этой конкретной библиотекой?

Джейсон: Я думаю, это была идея обратной совместимости, можно сказать, что jQuery потерял около двух секунд, и он готов к работе сразу после установки.

Луи: Да.

Питер: Да, я думаю, я хотел бы затронуть одну из вещей, на самом деле, есть пара вещей, которые вы хотите обвести вокруг, это то, как люди слушают это, если они не в Ruby. уже то, как они могли бы хотеть начать с этим, очевидно, это довольно важно и как быть в курсе того, что происходит в мире Ruby. Но я просто хотел коснуться различных реализаций, которые существуют вокруг, потому что несколько лет назад это было не так уж и важно, но теперь существуют различные жизнеспособные способы реального запуска и развертывания кода Ruby. Так что есть своего рода ядро, что-то вроде официального факта, в воздушных кавычках, реализации Ruby, которые называются MRI, что означает Matz ‘Ruby Реализация или Matz’ Ruby Interpreter, я не могу точно вспомнить, для чего я, но это доступно в нескольких вариантах, ну, в основном, в настоящее время это 1.8.7, что является немного более старой версией, но люди все еще используют ее, потому что это хорошо для приложений старых приложений Rails 2 и большого количества кода, который уже есть. но за последний год, что стало значительным с момента его выпуска в августе, это Ruby 1.9 или конкретно Ruby 1.9.2, который вышел в августе, и это действительно своего рода переписывание с гораздо более быстрой виртуальной машиной, производительность намного лучше, использование памяти лучше, и так далее, и так далее, и это своего рода официальные де-факто, они написаны на C, и они скомпилированы для большинства платформ, которые вы можете использовать их отлично. Но есть и JRuby за последние пару лет, полностью готовый к работе, работает на Java JVM, написан на Java, вы можете взаимодействовать со всеми вашими различными библиотеками Java, вы можете собрать свинг-приложение, есть несколько разных библиотеки, облегчающие эту задачу , например Monkeybars , это действительно хороший путь; использование памяти немного велико, но с точки зрения возможности развернуть ее и довериться ей, вы определенно можете это сделать. Есть также несколько других, не очень популярных в данный момент, но есть MacRuby, который нацелен на OS X, он дает вам лучший способ доступа к некоторым платформам Mac.

Луи: Так это что-то для создания настольных приложений для Mac?

Питер: Это не специально для этого, но это хорошо для этого; в течение последнего года или около того это стало хорошим способом развертывания настольных приложений на OS X, и я думаю, что вы увидите гораздо больше этого в ближайшие пару лет, особенно в Mac App Store. И последнее, но не менее важное, я имею в виду, что есть и другие, но последнее, но не менее важное, в основном это Rubinius, и это по сути Ruby, реализованный в Ruby, это не так очевидно, как это, но в основном есть очень быстрая виртуальная машина, написанная на C ++, и на самом деле это просто основной материал, который нужно запустить, но затем все основные классы, такие как Array и Hash, а также различные структуры данных и т. д. реализованы в подобном подмножестве Ruby поверх него. так что, если вы Rubyist, вы хотите помочь, помочь и изменить то, как работает Ruby, вы можете сделать это с Rubinius , и я думаю, вы увидите, что это станет гораздо более важным делом в течение следующей пары лет, и это может в конечном итоге узурпировать МРТ.

Луи: Да, вы только что говорили о Rubinius, так что, по большей части, если кто-то хочет начать работать с Ruby, было бы правильно сказать, что такой мейнстрим, как базовая реализация Ruby, базовый — тот, с которым нужно идти ?

Питер: да.

Луи: Или есть веские причины для чего-то вроде Рубинуса?

Питер: Нет, прямо сейчас МРТ почти полностью, это может быть немного спорным, но я не вижу никакой причины, почему вы захотите заняться чем-то еще, если вы не увлекаетесь Java, в котором На случай, если вы захотите начать с JRuby, вы сможете использовать существующие инструменты.

Луи: Мы говорили немного раньше о тестировании, вы говорили, что это большая вещь в сообществе Ruby, но, может быть, поговорим об этом немного больше, потому что это становится все более и более нормальным для веб-разработчиков, тогда как если вы посмотрите несколько лет назад Я полагаю, что PHP был чем-то вроде хобби, так что люди не писали много тестов, и теперь это действительно стало нормой для чего-то вроде PHP, но Ruby с самого начала придерживался такого мнения. Итак, о чем вы думаете, это что-то специфическое для сообщества или это что-то специфическое для языка; что делает его настолько сосредоточенным на тестировании, вы знаете, вещей, которые определяют сообщество Ruby, что даже когда вы думаете об этом, вы знаете, что Ruby — это своего рода программист другого типа, что, по вашему мнению, имеет везет что?

Джейсон: Я не совсем уверен, что движет к тестированию с сообществом Ruby, но это действительно укоренилось, я имею в виду даже до такой степени, что многие учебные пособия в эти дни, которые вы видите, выходят в блогах и тому подобное, будут ходить вы через тест-ориентированную разработку с Ruby. Но я думаю, что это скорее симптом общего развития, когда мы просто взрослеем и говорим, что это то, чем мы занимаемся, а не то, где какое-то время назад было необязательно писать тесты, в наши дни это так просто, несмотря ни на что. язык, который вы используете, чтобы найти среду тестирования и использовать среду тестирования, которая чаще имеет смысл тестировать, а не тестировать. Я думаю, что в Ruby этому способствует тот факт, что Ruby настолько открыт, что вы можете попасть туда и сделать что угодно для любого класса Ruby. Таким образом, если вы там меняете, как сказал Питер ранее, вы можете изменить способ работы оператора сложения в определенных классах; если вы делаете это и у вас нет теста, чтобы сказать, что он делает, какой-то другой программист из вашей команды собирается туда вмешаться, и они могут не знать, почему что-то подобное происходит, но если у вас есть хороший набор тестов и кто-то напутает с чем-то другим, тогда вы узнаете намного раньше в процессе, а не позже, где вы хотите знать.

Луи: Точно. Есть ли что-то еще, что происходит в мире Ruby, я думаю, что это одна из вещей, о которых мне интересно поговорить здесь, для людей, которые как бы видят это со стороны, каковы были основные события, кроме выпуск Rails 3.0, в прошлом году или около того?

Peter: Да, я имею в виду, что за последний год действительно произошло много всего, я имею в виду, что каждый год, похоже, так или иначе занят для Ruby, но в прошлом году, конечно, у нас был Rails 3, но это просто одна из многих вещей, и я думаю, что самой большой вещью в Ruby в целом был выпуск Ruby 1.9.2, который, как я знаю, звучит только как точечный релиз, но это своего рода первая надежная полноценная версия производственного качества. Ruby 1.9, который был сделан доступным, на что вы можете положиться, и на кого действительно переключаются пользователи. Так что Rails 3, одна из главных особенностей Rails 3 в том, что он отлично и без сбоев работает на Ruby 1.9.2, что позволяет разработчикам переходить на 1.9 с его типично лучшей производительностью, и было много улучшений под капотом, улучшений к виртуальной машине и некоторым улучшениям языка, она позволяет людям перейти к этой новейшей технологии по всем направлениям, так что вы можете запустить Ruby 1.9, вы можете запустить Rails 3, и это буквально все произошло даже не в прошлом году, как в прошлом году. шесть месяцев по сути, так что это было. Но помимо этого были достигнуты определенные успехи с этими другими реализациями, как я уже сказал, были некоторые важные выпуски JRuby, которые только сделали это быстрее и более производительным; Рубиниус — теперь некоторые люди скажут о полном качестве продукции, я еще не уверен в этом на 100%, но я пока еще не играл с ним достаточно, и то же самое относится и к MacRuby, всей этой идее создания целое приложение Mac с MacRuby; это было возможно более года назад, но на это не обязательно было положиться, а теперь это вполне заслуживает доверия. Итак, я думаю, что самые большие вещи, которые произошли в прошлом году, это не обязательно просто релизы определенных библиотек и тому подобное, это просто созревание реализаций и, конечно, некоторые проекты, такие как Rails, но Созревание, как и вся основа, на которой оно сформировалось, намного проще в развертывании, намного проще в размещении, все намного надежнее, и я думаю, что это было своего рода отличительной чертой 2010 года.

Луис: Да, конечно, это хорошо для тех, кто, возможно, подумывает о переходе на Ruby прямо сейчас. Вы немного поговорили о производительности, и я хочу, возможно, затронуть это очень быстро, потому что одна из жалоб, которую вы часто слышали от разработчиков, приходящих на другие языки в Ruby, заключалась в том, что она была не такой быстрой, как они. привык. Можете ли вы обратиться к этому и поговорить с ним, потому что я знаю, что более поздние выпуски, например, Ruby 1.9, намного быстрее, но, может быть, просто поговорим об этом в целом и о том, как изменилась производительность, как это важно и как в пространстве Ruby. как люди справляются с этим.

Питер: я думаю, что на самом деле это было раньше; то, что я сделаю, я перейду на сторону Ruby и позволю Джейсону перейти на сторону Rails, потому что есть важные соображения по обоим направлениям. Но с Ruby историческим видом и репутацией, которую он получил, был Ruby, о, Ruby — медленный язык, но очевидно, что он не учитывает количество времени, которое требуется для разработки, например, сценария Ruby, по сравнению с чем-либо еще. остальное. Это очень быстрый язык для разработки, даже если в прошлом некоторые реализации были довольно медленными по сравнению с другими языками, такими как Python и Perl и так далее. Но работа, которая была проделана с Ruby 1.9 и особенно с JRuby, которая имеет своевременную компиляцию, так что ваш сценарий будет становиться все быстрее и быстрее по мере продвижения и совершенствования этого угла компиляции, эти вещи фактически привели Ruby к правильному диапазон производительности действительно для языков такого типа, так что если вы посмотрите на популярные наборы тестов Alioth Shootout, которые публикуют тонны и тонны различных тестов для каждого языка в Интернете, и вы посмотрите на результаты, то теперь тест производительности JRuby на самом деле имеет более низкий, извините скорее как — с точки зрения времени, необходимого для запуска теста, средний показатель ниже, чем у PHP, так что на самом деле средний показатель немного выше. И это очень хорошо, потому что есть только так быстро, что вы можете идти без компромиссов в том, насколько легко разрабатывать на языке, так что, очевидно, если вы в C, если вы в языках, которые находятся в верхней части таблицы это замечательно, но Ruby действительно дает вам много интересных вещей, таких как чистая ориентация на объект и принцип наименьшего удивления, и все эти виды переопределения и создания DSL, все эти вещи, но теперь это дает вам с ожидаемым уровень скорости, так что это не совсем медленная собака, как раньше, теперь это больше, чем вы привыкли. Но тогда Rails связан с этим, конечно, потому что многие или, возможно, большинство разработчиков используют Rails с Ruby, и поэтому это также делает Rails немного быстрее, но у Rails также были свои проблемы с производительностью и, в частности, масштабируемостью за эти годы, и я знаю, что это сценарий, о котором Джейсон очень хочет поговорить. (смех)

Луи: Я имею в виду, может быть, вы можете немного рассказать о шутке и о том, почему вы смеетесь над ней, прежде чем погрузиться в нее, потому что некоторые из наших слушателей могут быть не знакомы с фоном.

Джейсон: Ладно, очень долго, какое-то время было долгое время, я не хочу шутить, но какое-то время казалось, что пишут только тонну постов в блогах о том, почему Rails может не в масштабе и почему люди придерживаются PHP или Java для своих нужд веб-разработки, и я подумал, что это было довольно забавно в то время, потому что были даже в тот момент, и это, вероятно, три, может быть, четыре года назад, возможно, ближе к в-третьих, в то время еще было довольно много приложений с высоким трафиком, которые были построены на Rails и прекрасно масштабировались; Я решил превратить это в шутку в сообществе Ruby и зарегистрировал CanRailsScale.com, которым я на самом деле очень горжусь; если вы используете Google Can Rails Scale, это результат номер два, по крайней мере, в США, и это просто веб-страница с надписью «НЕТ» (смех). Ого, теперь это номер один.

Луи: Итак, вы просто пытались завладеть этим и перевернуть его с ног на голову.

Джейсон: Да, именно так.

Луи: Так где мы сейчас находимся? Итак, вы говорите, что, может быть, три года назад было несколько видов приложений и сайтов Rails с высоким трафиком, сейчас их гораздо больше.

Джейсон: Да, определенно.

Луи: Что вы думаете о том, где сейчас обстоят дела?

Джейсон: Как и всегда, вы масштабируете архитектуру, а масштабирование зависит от приложения, а не от структуры. Я не думаю, что многое изменилось, и я до сих пор не знаю каких-либо структур, которые позволят вам быть «масштабируемыми в сети», как говорят дети в эти дни, прямо из коробки, вы знаете, что это действительно то, что зависит от приложения и каждое веб-приложение особенно должно по-разному масштабироваться и иметь разные потребности в том, как вы собираетесь к этому подходить; может быть много общего, но это не то, на что вы должны полностью положиться.

Луи: Да, хорошо. Итак, возвращаясь назад, мы немного отошли в сторону от того, что мы говорили об изменениях в Rails и Ruby в последнее время, и вы говорили, что многие реализации уже созрели и все стало быстрее. Еще одна вещь, которая интересна в Rails, это то, что для кого-то, кто немного разбирался в веб-разработке, одна из первоначальных вещей, которые изначально привлекли его к изучению веб-разработки, заключается в том, что вы могли бы написать несколько PHP-скриптов, бросить их на сервере общего хостинга, он поставляется с PHP и MySQL, и все было в значительной степени настроено для вас. В первые годы существования Rails было значительно больше серверов, необходимых для запуска и запуска вашего приложения, так что теперь все по-другому, и если да, то чем оно отличается?

Питер: Да, значительно отличается.Это то, что действительно изменилось за последние пару лет, и в лучшую сторону, вы знаете, что раньше было необходимо развернуть веб-приложение Ruby специально или приложение типа Rails для своих собственных процессов-демонов и иметь такой кластер демоны, работающие на определенном порте, а затем настраивающие Apache или что-либо еще, что вы хотели использовать для прокси-доступа к ним, или даже просто использовать как FastCGI, был довольно популярным способом развертывания приложений Rails в 2005, 2006 годах, и это было настоящий беспорядок, действительно ненадежный, плохо работал, и так далее, и тому подобное. Но потом я полагаю, что в начале 2008 года компания под названием Phusion или, точнее, пара компьютерных ученых, которые затем стали Phusion, выпустила нечто под названием Passenger.в то время я считаю, что он просто назывался mod_rails в некотором роде после Apache-традиции mod_wh независимо от mod_perl или чего-то подобного, и получилось, что это было расширение для Apache, и в основном это было то, что он ускорял процессы Ruby в фоновом режиме. Он будет управлять ими, вести их и автоматически передавать им все, и все равно будет работать аналогичным образом, но теперь это работает и для Nginx. И да, теперь вы можете запускать любое веб-приложение на Ruby, которое вам нравится, например, Passenger, в любом месте, где очень просто установлен модуль Passenger, он не так прост, как PHP, но чертовски близко. А потом были другие сервисы, которые запустили эту работу немного по-другому, но, например, Heroku.Хостинг довольно популярен, и это своего рода сервис облачного хостинга для веб-приложений на Ruby, и вы можете сделать это, если, например, управляя своим приложением с помощью Git, вы можете использовать Git, чтобы перенести свое приложение в сервис Heroku и они будут использовать Git, чтобы передать ваше приложение в службу Heroku, и они развернут и запустят его, и сделают его доступным по определенному URL-адресу очень просто, вы знаете, что существует сервис базового уровня, который на самом деле может свободно работать с вашими приложениями до они достигают определенного размера. Итак, вы знаете, за последние несколько лет ситуация действительно сильно изменилась с точки зрения развертывания, и, наконец, теперь вам не нужно иметь какую-то степень администратора системы или что-то еще, чтобы справиться с этим.

Луи: Точно.Это было мое понимание этого. Интересно, что я не слышал, что Passenger теперь может работать и под Nginx, так что это интересная разработка для людей, которые не так заинтересованы в использовании Apache для таких вещей.

Питер: Конечно.

Луи: Джейсон, ты хотел что-нибудь добавить к этому?

Джейсон: Это было отличное резюме (смех).

Луи: Я слушал это, и я думал, что в какой-то момент Джейсон собирается прыгнуть, и когда это продолжалось, я, как о, действительно охватил все, что я, возможно, хотел бы спросить об этом, я не думаю, что мы » Я собираюсь быть в состоянии пойти куда-нибудь от этого.

Джейсон: Да, я думаю, что единственное, что я мог бы затронуть, это то, что Heroku оказался настолько крутым, что это похоже на то, что идея копируется и для других платформ.

Луи: Да, я только очень кратко видел Heroku, может быть, вы можете немного рассказать об этом. Итак, это то, что это сервис облачного хостинга, который вы платите, подобно веб-сервисам Amazon, вы платите только за вычислительную мощность и используемую вами пропускную способность, но в основном, как вы сказали, заботится обо всех при развертывании приложений на Rails все, что вам нужно сделать, это нажать на исходный код, а обо всем остальном позаботятся, верно?

Джейсон: Точно.

Луи: И Питер говорил, что до определенного момента это бесплатно, какова отсечка?

Питер: Да, я не уверен, какова конкретная отсечка, но это в некоторой степени зависит от количества процессоров и количества одновременных соединений.

Луи: Итак, если вы хотите просто написать демо-приложение, это отличный способ просто выложить его в Интернете, чтобы вы могли взаимодействовать с ним в живом окружении, и оно может быть бесплатным, особенно если это просто демо и нет один использует это.

Питер: Да, и это даже не так дорого, чтобы увеличить его. Я имею в виду, что у Heroku есть некоторые, вы знаете, что есть некоторые дорогостоящие части в сервисе для добавления некоторых дополнительных функций, но с точки зрения базового сервиса масштабирование не слишком дорого, но тогда вы знаете, что можете взять то, что вы выучил и затем развернул свой собственный VPS или использовал EC2 или что-то еще, а затем сделал это сам, и с такими вещами, как Passenger, это просто упрощает установку, вы также можете легко развернуть свою собственную вещь, если вы не хотите заплатить Героку.

Джейсон: Я хотел бы сказать, что еще одна важная вещь с хостингом, которая отличается от той, что была год, два года назад, это инструменты мониторинга, которые у нас есть для ваших приложений, которых у вас не было несколько лет назад, я говорю о таких вещах, как New Relic и Scout, и об этом новом, с которым парни из Phusion выходят, которые дают вам действительно очень точные метрики для развернутого приложения и позволяют увидеть, на что вы тратите много времени в своих запросах; это действительно хорошие инструменты.

Луи: Точно.Таким образом, похоже, что тема здесь, если мы рассмотрим то, о чем мы говорили, так что Rails 3 вышел, и он не связан, так что вы можете использовать любые другие компоненты, которые вы хотите, хостинг стал проще, он стал действительно дешевым в в некоторых случаях, так что если вы используете Heroku, вы можете использовать его бесплатно до определенного момента, все реализации становятся очень зрелыми, существует множество различных реализаций, и все становится намного, намного быстрее. Кажется, что никогда не было лучшего времени для разработки Ruby и Rails.

Джейсон: Я бы согласился с этим.

Питер: Нет.

Луи: (смеется) Питер, нет лучшего времени или нет, я не согласен?

Питер:Ну, на самом деле, это в некотором роде и то, и другое, потому что это прекрасное время для участия, есть много работы, много возможностей, и люди все еще создают свои собственные веб-приложения, и это здорово, даже для тот. Но с другой стороны, некоторые из этих показателей того, насколько популярные языки вроде бы, действительно демонстрируют своего рода шум в Ruby, идея Ruby как находящегося на переднем крае в те дни постепенно постепенно уменьшается в этом отношении. Но я думаю, что это в некотором роде хорошая вещь, потому что это не обязательно, что люди не просто бегают к Руби сейчас, потому что, о, да, это последнее увлечение или последнее модное слово, они на самом деле приходят к нему и скорее видят его сильные стороны. чем автоматически бороться с этим, потому что они думают, чтоса мод. Итак, Ruby достигла такого уровня зрелости, что на самом деле забавно, поскольку Ruby только что исполнилось в прошлом месяце, которому только исполнилось 18 лет, так что он достиг зрелости, я бы сказал, к настоящему моменту, и это не столько увлечение, сколько было ,

Луи: Правильно, теперь Руби может пить, вот что ты говоришь

Питер: Да, в зависимости от того, в каком штате вы живете.

Луи: Хорошо, так скажем, если кто-то слушает, и ему интересно изучать Ruby и изучать Rails, какие ресурсы вы бы порекомендовали?

Джейсон: Обязательно послушайте The Ruby Show (смех), каждый эпизод, который у нас есть на сайте.

Питер: Это так верно.

Луи: Никогда не пропустите шоу The Ruby Show.

Джейсон: (смеется) скачай это прямо на iPod. Вы знаете, я видел возможность, я должен был прыгнуть.

Луи: Это совершенно справедливо.

Джейсон: Нет, на самом деле есть немало ресурсов, если вы хотите начать, как с Ruby, так и с Rails, есть куча книг, скринкастов, подкастов, каждый способ, которым вы, возможно, захотите получить информацию, есть много доступности там. Я упоминал The Ruby Show?

Луи: (смеется) Ruby Show, абсолютно. Я заметил одну из вещей, которая вышла довольно недавно, это Rails for Zombies . Вы хотите просто быстро объяснить, что такое Rails для зомби, потому что я подумал, что это был довольно удобный способ для кого-то погрузиться.

Джейсон: Питер?

Питер: Я просто хотел посмотреть, что скажет Джейсон. Да, в основном Rails для зомби, и мой взгляд на это был лишь поверхностным, это то, что это своего рода учебный онлайн-лагерь, как для использования некоторых основных частей Rails, так что вы можете Вы можете посмотреть некоторые скринкасты, которые были сделаны Грегом Поллаком и другой командой Envy Labs, которая является своего рода командой разработчиков Rails, вы можете посмотреть несколько скринкастов, а затем вы фактически получаете эту консоль в веб-браузере. где это отчасти дает вам эти маленькие упражнения, такие как Try Rubyонлайн-переводчик Ruby, но давайте сделаем некоторые базовые упражнения с ActiveRecord и т. д., которые вам нужно будет пройти, чтобы продвинуться по ходу курса, так что это своего рода интересный интерактивный способ подбора некоторых основ. Это не будет заменой книги или чего-то еще, и это не способ изучения Ruby, это буквально введение в некоторые концепции, связанные с Rails, но если вы хотите изучать Ruby, вам нужно выбрать другой путь. Но просто чтобы освоиться с некоторыми основами Rails, это интересно, особенно с видом зомби, что делает его очень привлекательным способом освоить некоторые из этих вещей.

Луи: Точно.Итак, если вы говорите, что люди уже должны быть немного знакомы с Ruby, что бы вы сказали, что это лучший способ просто освоиться с самим языком Ruby?

Питер: Ну, есть несколько разных подходов, я имею в виду, если кто-то совсем новичок в программировании или, может быть, он просто немного знает HTML и CSS, но не слишком разбирается в логической стороне некоторых из этих языков. Есть замечательная книга под названием « Учиться программировать » Криса Пайна, которая фокусируется на Ruby. Есть также книга, которую я написал и опубликовал вместе с Apress, под названием Beginning Ruby, которая буквально предназначена для всех, кто занимался кодированием ранее, поэтому имеет грубое представление о том, что делать, но вроде как хочет, чтобы их руки были на всем пути от базового добавления числа соединяются в игру, похожую на подземелье, что мы и делаем в книге. Но тогда у вас также есть более высококлассные справочники, какRuby Programming Language от Дэвида Фланнигана и Мэтца, так что Мэтц на самом деле участвует в создании этой книги, это абсолютно отличная ссылка на Ruby 1.9. И еще у вас есть что-то, что называется киркой, и это не является его официальным названием, потому что на обложке есть кирка, книга под названием « Программирование рубина», написанная Дэйвом Томасом и несколькими другими людьми, я не могу К сожалению, помните все их имена, но это еще одна популярная книга в мире Ruby. Так что это хорошие книги для начала.

Джейсон: Есть также классическая книга «Почему стоит упоминать о Руби» .

Луи: Это все еще рядом? Это все еще где-то в сети, потому что я думаю, что пытался найти это недавно, и мне было трудно найти его.

Джейсон: Да, вы определенно можете найти его копии, если вы в Google Why Poignant Guide, а теперь, если вы уже — если, скажем, вы новичок в Ruby, но не начинающий программист, я обнаружил, что одна книга, которая была действительно потрясающей, это Шаблоны проектирования в Ruby Русса Олсена, и это займет несколько шаблонов Gang of Four и покажет, как реализовать их в Ruby.

Луи: Точно.Хорошо, это здорово. Я предполагаю, что последнее, что я хотел бы затронуть, это, возможно, краткий обзор того, что там происходит; теперь, когда Ruby стал более зрелым языком, тогда как раньше единственная причина, по которой многие люди рассматривают изучение Ruby, — это создание веб-приложений на Rails, теперь существует ряд других проектов, использующих Ruby, или другие приложения, основанные на Ruby. Вы хотите немного поговорить о Ruby вне Rails и о том, что происходит в этом мире?

Питер: Да. На самом деле есть и другие проекты в веб-сфере, просто на минутку, чтобы сосредоточиться на этом, например, Sinatra.Например, это популярная альтернатива Rails, это не значит, что вы можете просто взять приложение Rails и сказать «хорошо», я просто собираюсь заново реализовать все это в Sinatra, и это будет очень просто, Sinatra действительно очень другой подход, он считает себя в основном библиотекой инструментов для создания действительно своего рода веб-приложений очень легким и очень рубиновым способом, потому что вы буквально взяли под контроль все, тогда как Rails предоставляет все эти соглашения и помощники в Sinatra. Вы как бы сами по себе, вам нужно все развивать, но это также может быть преимуществом, поэтому, если вы пытаетесь достичь абсолютной максимальной производительности или делаете что-то немного необычное, что не вписывается в в Rails, Sinatra — отличный подход, и этоУ меня только что был новый релиз, я думаю, вчера, извините, а не вчера, на прошлой неделе, так что это довольно интересно. И есть и другие системы, такие как, ну, на самом деле была такая, которая была похожа на почти предшествующие Rails, а также называемая Nitro, которую я не видел много в последние несколько лет, но я считаю, что она все еще находится в стадии релизов, и есть еще один называетсяRamazeкоторый также активно развивался в последнее время. Так что есть много маленьких проектов для игры с веб-вещами, в частности, но помимо веб-вещей, которые мы как бы затронули MacRuby и вся идея создания приложений для Mac, я также упомянул JRuby и возможность создавать свинг-приложения, так что люди этим занимаются, это не похоже на что-то экспериментальное или слишком ультрасовременное, если вам нужно создать приложение на основе GUI, которое вполне возможно с Ruby. Но, возможно, одна из вещей, которые мне действительно нравятся в Ruby, — это то, что за кулисами делается много вещей для создания серверных процессов, которые, возможно, для обмена сообщениями или для просмотра, или вещи, которые не имеют прямого отношения к сети. или, возможно, вещи, которые даже вы можете вызвать из Интернета, но на самом деле это не типичные HTTP-сервисы. Так,например, как и новый материал HTML5 Web Socket, вы можете создавать сервисы как бы за кулисами, предоставляя весь этот материал Web Socket и, возможно, связывая его с каким-либо хранилищем данных, таким как Redis или Mongo, или чем-то подобным, что вы можете создать. серверный процесс является своего рода завершением того, что ваш JavaScript будет вызывать в Ruby и запускать его отдельно, так что вы фактически не обслуживаете свое приложение, но можете использовать его для управления определенными частями приложения. Так что есть много таких вещей, которые действительно забавны, и это определенно стало хорошим языком для объединения вещей, которые работают в фоновом режиме, и сервисов, демонов и тому подобного.например, новый материал HTML5 для веб-сокетов, вы можете создавать сервисы как бы за кулисами, предоставляя весь этот материал для веб-сокетов и, возможно, связывая их с каким-либо хранилищем данных, таким как Redis или Mongo, или чем-то подобным, что вы можете построить на сервере. своего рода конец того, что ваш JavaScript будет вызывать в Ruby и запускать его отдельно, так что вы на самом деле не обслуживаете свое приложение, но можете использовать его для управления определенными частями приложения. Так что есть много таких вещей, которые действительно забавны, и это определенно стало хорошим языком для объединения вещей, которые работают в фоновом режиме, и сервисов, демонов и тому подобного.например, новый материал HTML5 для веб-сокетов, вы можете создавать сервисы как бы за кулисами, предоставляя весь этот материал для веб-сокетов и, возможно, связывая их с каким-либо хранилищем данных, таким как Redis или Mongo, или чем-то подобным, что вы можете построить на сервере. своего рода конец того, что ваш JavaScript будет вызывать в Ruby и запускать его отдельно, так что вы на самом деле не обслуживаете свое приложение, но можете использовать его для управления определенными частями приложения. Так что есть много таких вещей, которые действительно забавны, и это определенно стало хорошим языком для объединения вещей, которые работают в фоновом режиме, и сервисов, демонов и тому подобного.Это определенно станет хорошим языком для создания таких вещей, которые работают в фоновом режиме, сервисов, демонов и тому подобного.Это определенно станет хорошим языком для создания таких вещей, которые работают в фоновом режиме, сервисов, демонов и тому подобного.

Луи: Джейсон, ты хочешь что-нибудь добавить к этому?

Джейсон: Да, я хотел сказать, что знаю многих людей, которые используют Capistrano для развертываний вне Rails, Capistrano — это драгоценный камень, у которого есть еще один подобный предопределенному способ управления развертываниями для приложений, и я знаю группу людей, которые используйте это на WordPress, в том же духе; вы знаете, что мы уже говорили о тестировании фреймворков, и у меня есть друзья, которые разрабатывают на WordPress и используют Cucumber для тестирования на установку WordPress и тому подобное.

Луи: Хорошо, вы хотите немного рассказать о том, что такое огурец?

Джейсон: Итак, Cucumber — это инструмент интеграционного тестирования, где вы пишете свои тесты с использованием такого рода языка текстовых рассказов, и идея заключается в том, что заинтересованных сторон будет больше, чем просто разработчика приложения, поэтому люди, которые, возможно, не являются таковыми. разработчики могли бы пойти туда и написать несколько историй и сказать, эй, вот как должен работать этот определенный аспект поведения сайта, все с этим согласны, и тогда вы можете взять эти простые текстовые истории, которые пишут люди, и заставить их работать против вашего приложения. , против вашего живого приложения, и оно пройдет или потерпит неудачу.

Луи: Хорошо, просто базовая вещь вроде «Я хочу иметь доступ ко всем своим электронным письмам, когда я нажимаю на свои электронные письма».

Джейсон: Точно, и это очень похоже на то, как вы на самом деле пишете эту функцию, а затем вы говорите что-то вроде «если я нахожусь на домашней странице, когда нажимаю на кнопку« Войти »и ввожу правильные учетные данные, я должен увидеть свои электронные письма».

Луи: Хорошо, а затем вы пишете бэкэнд, чтобы превратить его в тест, который будет выполняться напрямую.

Джейсон: Точно.

Луис: Хорошо, так что я думаю, что мы можем немного подвести итоги, ребята, большое спасибо за то, что пришли на шоу и поговорили со мной сегодня.

Джейсон: Спасибо, что поддержали нас.

Луи: У нас была небольшая проблема со Skype в начале, но последнее время было очень хорошим, так что, надеюсь, мы сможем отредактировать все это вместе. Ребята, вы просто хотите сообщить нам, где слушатели могут найти вас, ребята, в Интернете, давайте начнем с Питера?

Питер: Да, тогда я позволю Джейсону поговорить о подкасте, но я веду, пожалуй, самый популярный блог Ruby на RubyInside.com, который содержит статьи, советы и тому подобное, но также и Rubyflow.com, который является сайт сообщества, где каждый может зайти и опубликовать свои новости и ссылки, связанные с Ruby on Rails, а также Rubyweekly.com, который похож на еженедельную рассылку последних статей и так далее.

Луи: Хорошо, ты очень занят. Так что я буду публиковать ссылки на все это в заметках к шоу; Вы есть в Твиттере?

Питер: Да, я @peterc в Твиттере.

Луи: Хорошо. А Джейсон?

Джейсон: Я уже упоминал The Ruby Show (смех).

Луи: я не думаю, что вы сделали; Я думаю, сейчас самое подходящее время.

Джейсон: Итак, мы делаем новостную подкаст Ruby на Rubyshow.com, вы можете найти меня в Twitter @jseifer , мой блог — Jasonseifer.com, а я консультирую по Ruby on Rails на Twistedmind.com .

Петр: Намек, намек (смех).

Луи: Хорошо, большое спасибо, ребята.

Питер: Это было хорошо.

Джейсон: Спасибо, что приняли нас.

Луи: Хорошо, это было приятно. До свидания.

Джейсон: Пока.

Питер: Пока.

Тема музыки Майка Меллы .

Спасибо за прослушивание! Не стесняйтесь сообщить нам, как у нас дела, или продолжить обсуждение, используя поле комментариев ниже.