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

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

А что же такого «весёлого» в ruby?
Говорящие лисы, например.
Хотя это не сам руби, а лишь классная книжка о нём, но зато действительно весело…
НЛО прилетело и опубликовало эту надпись здесь
"то будете приглашены ознакомиться с пятнадцати руководством, который обучит вас базису"

Гугл-транслейт что ли?
Не дождетесь. Весь перевод был выполнен вручную. Но за качество извиняюсь. Писал в спешке. :)
в следующий раз, когда будете переводить не-гугл-транслейтом, удостоверьтесь, что ваше «вручную» случайно не скушало половину ссылок в статье.
Да, спасибо. Исправил.
У меня за спиной огромный опыт работы с PHP, но сейчас я работаю Rails разработчиком.
Поделитесь секретом, как нашли работу (джуниором?) без опыта с рельсами? Все вакансии, что вижу, требуют опыта, кучи различных технологий, аккаунта на гитхабе (на битбакете видимо не пойдёт) и т. п.
Ну вообще это перевод по большей части. Но расскажу про свой опыт.
Я относительно недавно в сфере веб программирования (занимаюсь бэк-эндом). Всё началось с предложения локальной компании администрировать их сайт. Дальше — больше. Попросили заняться бэкэндом. Недавно и вовсе в маленькая компания из подмосковья предложили работу, как «юному таланту». Работая, набираюсь опыта. Хотя я сам не особо верю в то, что происходит… Фортуна :)
Лично мне подвернулась вакансия «можно junior», опубликованная хорошим знакомым. С задачкой справился опять же.
Ищите лучше. Я устроился без опыта программирования по найму вообще (не говоря уж о руби). Зарплата была неахти, но главное тут — это начать. Меньше чем через пол года уже начали поступать предложения с утроенной зарплатой (на испытательный срок) от совершенно посторонних людей.
Это все без связей и от незнакомых мне людей.
Как вы заставили работодателя взять вас без опыта? :) У меня пока не получается, хотя опыт потихоньку нарабатываю. Но работу программистом не могу найти уже пол года.
без опыта программирования вообще? никак не заставишь. с опытом вообще, но без опыта с использованием рельс — существенно проще. ну подумаешь +1 фреймворк. ладно, +1 ЯП и +1 фреймворк.
у меня нет опыта программирования вообще. Я сразу начал с Руби:)
Сколько раз писал что-то вроде «20+ лет опыта эпизодического программирования вообще, из них 10+ лет на PHP, рельсы изучал, но практики нет, пришлите тестовое задание» — даже ответом не удостаивали.
А что мешает получить практику? Выберите один из популярных OpenSource-проектов на Rails и сделайте туда хотя бы десяток коммитов…
Это сразу увеличит Вашу привлекательность для работодателей в разы. При том что Вам это практически ничего не стоит, если квалификация позволяет включиться в разработку существующего проекта.
Может в рельсах по другому, но все мои попытки отправить патчи, реализующие новую функциональность или даже покрытие тестами/рефакторинг, в пхп-проекты были отклонены. «Это никому не нужно или нужно незначительному меньшинству, а большинству будет мешать», «это противоречит концепции», «это не даст пользователям ничего нового, а время обработки увеличит», «никто не будет ставить приложение на СУБД отличную от MySQL, а потому pdo и dbal не нужны», «это нарушит BC, неймспейсы есть не на всех хостингах» и т. п.

В общем, теоретически звучит заманчиво, а на практике сизифов труд. А на вопросы вроде «Что можно сделать для проекта?» в личку/на мыло предлагают в лучшем случае исправить открытый в багтрекере баг в спагетти-коде и даже если его локализуешь путем покрытия тестами и рефакторинга (банальное выделение объектов и методов с передачей глобальных переменных в качестве параметров конструктора/методов) и исправляешь, то принимают не отрефакторенный код, покрытый тестами, а просто исправляют ошибку. Вроде сделал полезное дело, ошибка исправлена, но осадок какой-то остался. Особенно в ситуации когда очень много ошибок в проекте являются регрессионными, вводят новую функциональность, а старая ломается.
В Ruby-проектах отношение к контрибьютерам лучше.
Хотя действительно лучше начинать с небольших тикетов из issues на github-аккаунте проекта.
Ну а если вы хотите добавить новую фичу, то либо делайте её отключаемой, либо сначала обсудите это в тех же github issues или на lighthouse или на uservoice, в зависимости от проекта.
Когда Вы без спроса и согласования пытаетесь добавить новую функциональность в чужой проект, то это конечно странно само по себе, хотя иногда может прокатить, если функциональность действительно полезная.
Аналогично. :)
Недавно начал изучать RoR, но как-то прошёл мимо railscasts. Теперь буду иметь ввиду, спасибо!
Всегда пожалуйста. Рад, если в данной инструкции вы найдете еще что-либо полезное. :)
Всегда было интересно что-то новое, о руби знал и слышал уже давно… и даже пытался как-то начинать изучение, но всегда не хватает времени на что-то отвлеченное, так и забросил… сам пишу на php — знаю его хорошо, последнее время использую yii. Объясните мне пожалуйста, чем ruby лучше php и rails лучше yii? Что такого я смогу сделать там, чего не смогу сделать здесь? спасибо за статью, интересно, ссылки полезны, но процесс изучения, как я считаю, что в php, что в ruby везде одинаков — hello world, examples, blog…
Вы понимаете, что можете вызвать очередной холивар своим вопросом? Чтобы никого не задеть своими аргументами, предлагаю поступить таким образом:
1. Погуглите, об этом очень много написано.
2. Если чуда не случится и вы не найдете информации, то пишите в личку — отвечу с радостью.
Почему все так боятся «холива варов»?
Это же интересно слушать мнения других и подчерпывать что-нибудь новое :)
Просто в таких ситуация не надо съезжать на интернет срач «у кого сильнее бьет» и «а мой дедушка», надо вести конструктивный разговор и по делу высказываться.
От слов Holy и war же. :)
в данном конкретном случае, Rails — это как Mac OS X от мира веб-фреймворков. вы пробовали когда-нибудь спросить у маковода, чем, по его мнению, мак лучше других операционных систем? по функциональности ничем. он лучше религией, отношением к пользователю и общим удовлетворением от пользования компьютером.
Странно. Мне маководы обычно отвечают про плавный скролл в веб браузерах, командную строку *nix с тулзами и компилятором, полное шифрование диска без необходимости trusted platform module спецжелезки. Еще Airdrop показывают и встроенную систему контроля версий документов — но это из последнего.
я, видимо, забыл упомянуть. не по сравнению с Default OS, а по сравнению с хотя бы Ubuntu.
Наличие родных (не портированных) программ Adobe (Photoshop, Flash...), Cubase, Logic, не в последнюю очередь Steam и игр на движке Half-Life (ну и World of Warcraft, куда без него).

Сразу оговорюсь, холивар на тему «Gimp против Adobe Photoshop» не имеет смысла — я не граф. дизайнер, просто привожу типовый валидный аргумент.

У каждой ОС свои преимущества и недостатки. Про религию говорят люди, как правило, специально провоцирующие холивар.
я на рельсах специализируюсь уже четвёртый год. вы думаете, что я провоцирую холивор, говоря про религию?
Ну ветка-то про макось, не про рельсы.

Отличия руби от php тоже вполне можно привести, они не ограничиваются религией.
в каком месте это ветка про макось?
>Rails — это как Mac OS X [...] вы пробовали когда-нибудь спросить у маковода
>Странно. Мне маководы обычно отвечают про [...]

Вот эта ветка. Неважно, проехали.
В буквальном смысле этого слова :) Так он обычно замаскирован под якобы недостатками и достоинствами конкурентов, а вы сразу на религию ;)
Еще про XCode забыл написать, этот аргумент оказался решающим лично для меня, поскольку нужно было писать софт для iPhone / iPad.
Холивары сначала конструктивные начала имеете, а потом по традиции перерастает в срач. :)
Миграции, прекрасный ORM, синтаксис, гемы — самое первое и очевидное что приходит на ум. Нужны тэги? Пожалуйста — есть несколько гемов на гитхабе. Сортируемый список? Пожалуйста — гем acts_as_list. Авторизация, регистрация, восстановление пароля и прочее? Пожалуйста — гем devise. И так для всего.
Куча замечательных хелперов, встроенных методов. Всегда тащусь, когда нахожу в руби что-нибудь подобное:
1.9.3p0 :001 > Date.today
=> Mon, 13 Feb 2012
1.9.3p0 :002 > Date.today.end_of_month
=> Wed, 29 Feb 2012
1.9.3p0 :003 > Time.now.end_of_month
=> 2012-02-29 23:59:59 +0400
1.9.3p0 :004 > Date.today.friday?
=> false
это не ruby. это ActiveSupport.
Да, конечно же, перепутал. Это не руби, но это идеология руби — он такой во всем. Откроешь любой гем — красота. Сам стараюсь писать подобные красивые вещи. Извиняюсь что пишу так непонятно и сумбурно, просто переполняют чувства :)
Откроешь любой гем — красота
Ну нет, не совсем так.
В современных PHP-фреймворках и базовой библиотеке всё (почти, наверное) это (миграции, прекрасный ORM) есть (ну кроме гемов, конечно, модули у них по другому называются и единого формата и менеджера пакетов нет), а кое-что даже получше (для ruby нет ORM реализующий DataMapper, и появится не раньше чем через полгода, причём будет являться «клоном» ORM на PHP, по крайней мере мне так ответили в ror2ru@googlegroups.com )

Для меня главные преимущества ruby:
— более лаконичный синтаксис (включая принцип «всё объекты»)
— более продуманное именование стандартной библиотеки

Главные недостатки (тут больше к рельсам, а не к руби):
— отсутствие популярной, функциональной и удобной CMS по типу WP, Drupal, Joomla и т. п.
— поддержка только немногочисленными хостерами
— более сложное администрирование среды для выполнения (по сравнению с LnAMP)
— малый спрос со стороны заказчиков

Подозреваю, что последний пункт следствие первых трёх.
В минусах еще:
— малое количество разработчиков, как следствие:
.слабое комьюнити
.высокие зарплатные ожидания
.отсутствие простых конечных продуктов(WP, Drupal, Joomla)

Но главный плюс, который перекрывает PHP на 100 раз и еще остается:
— крайне понятные конструкции и лаконичный синтаксис, который позволяет ротировать программистов и подключать новичков в любой момент разработки. Ну или расстрелять всю команду разработчиков и нанять новых ))

В том же PHP каждая новая команад или новый ментейнер начинает знакомство со слов: «Нууу… Легче все переписать с нуля, чем пытаться его поддерживать»

Как по мне, то малое количество компенсируется большей активностью. По крайней мере если сравнивать рельсам с отдельно взятым php-фреймворком (вот ещё недостаток PHP — множество очень сильно пересекающихся по функциональности и так же сильно различающихся по реализации интерфейсам библиотек/фреймворков/готовых продуктов, что и разбивает сообщество, и затрудняет миграцию с проекта на проект).

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

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

это вы сейчас «слабое коммьюнити» про рельсы сказали? это ЛОЛ
чтобы не быть голословным: посмотрите здесь на наше слабое коммьюнити github.com/languages
А на bitbucket поиск по php выдаёт 1000+ репозиториев, а по ruby 500+, то есть с точностью до наоборот соотношение. Так что не показатель количество проектов (правда на битбакете статистики или поиска по языку не нашел, а искал просто по строке). Особенно учитывая, что далеко не все пехепешники пользуются преимуществами VCS, а среди рельсовиков это норма.
1000+? на апрель прошлого года на гитхабе было зарегано 225 000+ репов на Ruby
Так мы соотношение сравниваем :)
так вы сначала просуммируйте, а потом сравните.
Давным давно уже есть datamapper.org/.
От паттерна DataMapper там одно название вроде как, а так типичный ActiveRecord — оболочка для БД с возможностью добавления бизнес-логики. Сам объект должен знать как он соотносится с БД, как ему сохранится в частности. В DM же об этом знает мэппер (обычно с обвязкой типа репозиториев и единиц работы), а сам объект даже не подозревает в общем случае, что он где-то хранится, его хранением и восстановлением занимаются другие.
Может быть тут вы найдете ответ.
Я вам скажу чем. rubygems.org/
Сделать можно примерно тоже самое, но делать это приятнее и многое более логично и стандартизованней (есть соглашения и почти все им следуют).

чем ruby лучше php
рельсами
чем rails лучше yii
более гибким (почти совершенным) веб-стеком, как следствие — лучшей повторной используемостью кода, как следствие — меньшим кол-вом велосипедов, как следствие — тем, что если люди что-то делают руками, то почти всегда это нереализованные никем фичи.
> > чем ruby лучше php
> чем лучше

чем php
нет. как ЯП руби — так себе. хоть местами и уделывает PHP. и рельсы — едва ли не единственная причина пользоваться ruby. вторая — огромное кол-во gemов и bundler.
А мне нравится больше чем PHP и не местами, а в целом.
на самом деле терпеть не могу подобные сравнения. библиотеки есть и там и там, как впрочем и сильное комьюнити. На php есть symfony и cakephp, но в количестве плагинов/бандлов они скорее проиграют rails.
Тут ещё проблема в том, что общее количество библиотек в PHP может и больше, но среди них много с дублирующейся функциональностью, хотя бы за счёт того, что есть и symfony, и cakephp, и codeigniter, и kohana, и yii, и zend. А в ruby на слуху только rails да иногда sinatra всплывает.
вы говорите так, будто pear уже научилось держать установленными несколько версий пакета одновременно (и подсовывать приложению ту, которую оно попросит). и как будто в PHP есть аналог Rack.
На pear свет ведь клином не сошелся. Как я уже сказал комьюнити образуются вокруг фреймворков. Со своими plugin-менеджерами.
Добавил в закладки.
Интересно, почему статья читается так, как будто это перевод?
Упс, извините, был неправ, пропустил: «Далее вы увидите перевод»
В обучении есть два подхода — от общего к частному и от частного к общему. Они рассчитаны на два типа людей — одним проще понять, когда им показывают как с помощью «магии» сделать блог в несколько команд, и после этого объясняют что это была за магия, от сложного к простому. Вторым понятнее, когда сначала описывают все заклинания, от простого к сложному, а затем показывают как с их помощью сделать блог.

Все уроки и книги по rails которые я видел — это половина первого подхода. Книга Agile Web Development With Rails, кторую я с трудом заставил себя прочесть (а я занимаюсь разработкой уже более пятнадцати лет — не web, но все равно) — это сборник кулинарных рецептов в первой части книги (вида — чтобы сделать блог введите эту команду, затем эту а затем эту. Что данные команды делают и как работают не разъясняется — либо это что-то само-собой разумеющееся, что сомнительно, либо авторы сами не до конца понимают как это все работает) и справочник доступных ингредиентов для готовки во второй ее части (если вы хотите авторизацию — используйте вот такой комплект заклинаний. Если хотите экспорт в XML — то вот такой).

Не то чтобы это был плохой подход — он позволяет достаточно быстро натаскать человека без опыта на выполнение тривиальных действий. Но, с другой стороны, у обученного на кулинарных рецептах специалиста в общем случае будут некоторые проблемы с изготовлением чего-либо, за рамки этих кулинарных рецептов выходящего.

Может кто знает хорошую книгу или набор статей по рельсам от простого к сложному, без кулинарных рецептов, с объяснением какая там архитектура и как все работает? А то стыдно в мои годы рельсы не знать, а с теми «знаниями» что дают описаные выше статьи я не могу сказать что знаю рельсы :(.
* Design Patterns in Ruby (описываются ключевые паттерны и их реализация на Руби)
* The Book of Ruby (грамотно о самом языке)
* Eloquent Ruby (как писать код именно на Руби используя все возможности и правильную семантику)

Потом уж к Рельсам переходите, а то без знания материала вышеописанных книг рискуете дальше скринкастов не продвинутся.
Руби я неплохо знаю. Мне бы про рельсы :)
Ну, как бы есть книги, если вам нужно больше, то в мире руби принято исследовать исходный код. С Рельсами я такого не делал, а вот с Синатрой очень даже.
в мире руби принято исследовать исходный код
А в каком мире не принято? :)
Имелось ввиду, что исходник вполне может заменить документацию)
Присоединяюсь к просьбе посоветовать материалы. Мне тоже больше нравится подход снизу-вверх. Так можно сразу более детально понять как всё устроено внутри
И да, именно про рельсы
Я там ниже оставил ссылку, возможно будет полезно
Спасибо большое, очень интересно и доступно
Я бы добавил прекрасный ресурс railsforzombies.org.
А перед этим дочитал бы статью и понял что все уже там написано.
Советую добавить это: russian.railstutorial.org
На английском уже сделана версия для 3.2
очень полезен также для тех, кто новичок не только в rails, но и в целом в Веб
А не приведёте ли ссылку, где там про 3.2?
А то я только 3.1 вижу, да и то — только в 13-й главе.
… рекомендую вам использовать RVM. Это великолепный инструмент, предназначенный для установки Ruby. Собственно, вот инструкция по самой установке… — а где инструкция?)
Если же у вас Windows, то советую проследовать сюда.


Я могу ошибаться, но под слово «сюда» должно было быть ссылкой?
И ведь действительно ошибся, но в предложении. Кстати, хотел еще добавить, что для новичков может быть полезен и вот этот сайт rusrails.ru/
По Ruby
Как по мне лучший способ изучить/подтянуть Ruby это http://rubykoans.com/ — изучение Ruby путем заполнения пробелов и прогонки тестов. Разумеется если ты уже понимаешь основы программирования и просто решил изучить Ruby.

По Rails
http://RailsCasts.com — Наше ВСЕ.
Когда начинал изучать Rails пересмотрел 200 серий за месяц, у меня был буст понимания Rails концепций колоссальный.

На RailsCasts.com последнее ~4-5 месяца есть Pro подписка стоит 9$ в месяц — это копейки (за дополнительные 2 каста в неделю к одному бесплатному), подписка на эти касты стоит своих денег.

Ну и разумеется книга Rails Way.

Это из личного опыта.
В статье сильно не хватает:
1. rubymonk.com/
2. rubykoans.com/

И, да, есть мнение, что изучать рельсы не покурив предварительно метапрограммирование — путь не к просветлению, а к быдлокодерству.
Скоро ещё стартует saas class
>This course teaches the engineering fundamentals for long-lived software using the highly-productive Agile development method for Software as a Service (SaaS) using Ruby on Rails.
> for free
Круто!
Как сказал retran чуть выше, в руби без метапрограммирования никак. Metaprogramming Ruby (http://pragprog.com/book/ppmetr/metaprogramming-ruby) — отличная книга.
«Никак» значит, что без него не реализовать то, что у «конкурентов» реализуется или что без него придётся реализовывать так же как у конкурентов, а не более лаконичным и читаемым способом?
Ееее, как раз изучаю и дошел до середины 5-го пункта :)
Когда изучал, нашел сайт — www.opensourcerails.com/
Исходники проектов, написанных на Rails.
К слову — asciicasts прекратили размещение материалов с railscasts, т.к. эту функциональность Бейтс встроил в railscasts. Поэтому теперь читать, в том числе немногочисленные переводы на русский язык можно на railscasts.com
«Собственно, вот инструкция по самой установке.»

Ссылку съело? :)
Да хрен с ним, что поставили минус по комментарию, вопрос остается в силе. Так как действительно имею проблему с установкой RVM на маке. Думал, авось есть какая-то ссылка по инсталлу на которую еще не натыкался.
во-первых, стоит начать с использования стабильной ветки. с недавнего времени рекомендуют ставить именно её.
2 — сходите с проблемой в irc://irc.freenode.net/#rvm. ну и ещё есть багтрекер на github.
Предполагается, что вы внимательно читали, что пишет RVM и делали, что просят.
В том то и дело что читаю вроде все, но скорее всего это из-за того что я пытался поставить 1.9.3 версию, буду сегодня пробовать другую. Объясните пожалуйста что такое: ruby-1.9.2-head и ruby-1.9.2-p180? И что из них стабильное? :)
p180 же
-head — свежак из subversion, не обязательно стабильный.
Понято! Спасибо. :)
Изучение Ruby/RoR стоит начинать с перехода на никсы.
на первое время хватит и виртуалки с линуксом
+1, вообще на винде рекомендую использовать Vagrant, позволяет легко и быстро поднять юникс в виртуалке, заточенный специально для разработки на RoR. У меня рельсы намного быстрее там работают, чем под win7 или cygwin.
Про него есть рейлскаст: railscasts.com/episodes/292-virtual-machines-with-vagrant
Про рельсы добавил бы книжку Rails Way Оби Фернандеса. Есть ещё Rails 3 Way, её вроде пока на русский не перевели.
>Если же вы используете RVM, то примите мои поздравления — у вас Rails уже установлен.

Это как?
Трудности перевода. В оригинале было написано: «To do so you should have RubyGems installed on your computer. If you used RVM to install Ruby, congratulations, you already have it!».
То есть если у вас установлен RVM, то у вас уже есть RubyGems. Rails тут не при чем.
Нет, не трудности. Просто писал в спешке. Исправил.
Пользуясь случаем, прорекламирую свой кодкаст github.com/Ptico/from-rack-to-rails призванный разобраться в том, на каких принципах и как работает Rails и другие Rack-совместимые веб-фреймворки. На данный момент доступно 6 шагов, планирую в ближайшее время выложить еще 4.

Заодно буду очень благодарен за помощь с переводом на английский.
Где-то пол года назад начал читать перевод railstutorial.org. Т.к. это было летом, отдыхал, то под рукой не было компа — читал с ридера. Вообщем, когда домой вернулся — вышла новая версия и забросил дело.

Недавно узнал, что вышла вторая часть этого замечательного учебника. Правда он на английском — но свежую документацию по rails вы мало где можете найти, разве что скринкасты. Начал с удовольствием читать. В этот раз начал сразу же повторять те действия, которые описываются в учебнике. Не дочитав первую главу нашел ссылку на tryruby.org. Увлекся этим курсом и дальше-больше — нашел RailsForZombies. Его тоже окончил. Но в CodeSchool остальные 2 курса по руби оказались платными — $20. Может у кого-нибудь появится желание купить подписку на месяц? Можно собраться несколько человек и купить подписку. Скажем, впятером. По 4-5$ не жалко и разрабов не обидим.
Кто заинтересован, то обращайтесь в ЛС/ПМ.
Хорошая статья. Когда несколько лет назад начинал изучать Rails прошел, вобщем-то, через все эти шаги.

По поводу дискуссии чем Ruby/Rails лучше или хуже чем Н, я заметил что на и для ruby очень много высококачественного софта, который шагнул далше чем то, что было до него и потянул за собой массу «подражателей» на Python, PHP и т.д. Я имею ввиду:
— RubyOnRails;
— RSpec и Cucumber;
— Capistrano; и
— Sinatra.
Имхо, это связано с тем, что на нём приятно писать и, прежде всего, писать DSL и на них (меньше синтаксического мусора). А потом уже понравившиеся идеи перетаскивают на другие языки, если по каким-то причинам использование ruby неприемлемо.

Хотя я использую capistrano и не вижу необходимости переписывать его на PHP (тем более что получится хуже из-за синтаксиса). Но тут ещё дело в том, что cap инструмент, который исполняется локально у разработчика/администратора/деплой-сервера, а не на продакшене (хотя я и на продакшен поставил для одного пользователя, но это вынужденная мера).
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.