Установка Ruby on Rails под Windows

    Заинтересовал меня Rails. Купил пару книг, прочитал… достаточно чтобы, зачесались руки и пришло время ставить сабж. И приступать… хотя бы к экспериментам.

    Задача: поставить Rails под Windows 7 (не спрашивайте меня почему) и запустить сервер.

    Оказалось — это квест. Пары щелчков мышью недостаточно. Конечно, если не использовать Railsinstaller, на что мне правильно намекнули в комментариях (спасибо, dreamfall).

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


    1. Ставим Ruby. Строго отсюда rubyinstaller.org/downloads. Ибо тут он собран под gcc MinGW 32, который будет использоваться и для сборки ruby-модулей
    1.1 Нам понадобиться версия 187. Версия 192 треует более мощного шаманства, на которое у меня маны не хватило.
    1.2 Ставим Development Kit (он нам понадобиться, чтобы собрать Rails), распаковывая прямо поверх каталога Ruby (если ставили по умолчанию — это C:\Ruby187, в дальнейшем обзовем его $Ruby)
    1.3 Можно заодно и документацию по Ruby скачать

    2. Нам понадобиться SQLite www.sqlite.org. Архив c dll-кой и def файлом распаковываем прямо в каталог $Ruby\bin. Это кстати был первый сюрприз (раньше RDBMS «по умолчанию» был mySQL)

    3. Запускаем Comand Prompt wiht Ruby (вы найдете его в start-меню windows)

    4. В comand prompt ставим модули:
    4.1. gem install sqlite3-ruby — SQLite
    4.2. gem install rails — собственно сами «рельсы». Возможно, что установка прервется с ошибкой, в этом случае повторяем команду
    4.3. Даже если ошибки не случилось, всё равно потребуется шаманство. Ибо, на каждый наш чих, будет вылезать вот такое непотребство:
    Invalid gemspec in [C:/Ruby187/lib/ruby/gems/1.8/specifications/json-1.6.1.gemspec]: invalid date format in specification: «2011-09-18 00:00:00.000000000Z».
    Это ошибка связанная с форматом даты. Лечится просто. Переходим в каталог $Ruby\lib\ruby\gems\1.8\specifications и в файлах «с ошибкой» меняем строчку
    s.date = %q{2011-09-18 00:00:00.000000000Z}
    на
    s.date = %q{2011-09-18}
    4.4. Для успокоения совести gem update rails --include-dependencies

    5. Создаем тестовое приложение. Там же, в Command prompt
    5.1 Переходим в каталог «для игр» например cd \test (или mkdir \test;cd \test — если такого каталога нет)
    5.2 Создаем приложение rails new hello. Второй сюрприз — в книжках ничего не говорилось про «new».
    5.3 Запускаем наше приложение. cd hello; rails server . И последний сюрприз — в тех же книжках ссылка на несуществующий больше скрипт rails server/script
    5.4 по адресу localhost:3000 внезапно мы обнаруживаем наше долгожданное приложение.

    Вуаля!

    Продолжение воспоследует, если по мере углубления обнаружатся еще подводные камни.

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

      +1
      Я это видел как минимум в двух электронных учебниках. Не вижу особой проблемы.
        0
        yandex.ru/yandsearch?text=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+Ruby+on+Rails+%D0%BF%D0%BE%D0%B4+windows&lr=213

        Сколько ссылок из топа — рабочие. Я к сожалению, как привык читать техлитературу в бумажном виде, так и не могу отвыкнуть. Тем более, что до работы час на метро. Посему электронные учебник не мой метод.

        Вот для таких же людей как я — это и написано. Вчера я был бы очень рад такому топику.
          0
          Хм, а вы написали статью не в электронном виде, а в бумажном?
            0
            Потому что повторяюсь, поиск в электронном виде ничего подобного не быстро нашёл.
          0
          >>>Второй сюрприз — в книжках ничего не говорилось про «new».

          Так у вас книжки видимо по рельсам 2.х или даже ранее:) Помню помню как я возился под ХР с Rails 3. Вы только про косяки с бандлом отдельный пости не пишите:)
          А вцелом полезно!
            –1
            Угу 2006го и 2007 года — это две книжки из трех по рельсам, что я нашел в инет магазинах на русском.

            Спасибо.
            0
            Есть ещё и такой способ с Cygwin: habrahabr.ru/blogs/personal/76443/
              0
              Спасибо. Я уже начинал думать про Cygwin, но неожиданно все заработало ;)
              0
              А чем RailsInstaller не угодил? Скачал, посмотрел видео, установил. У меня, при когда то нулевом знании рельсов на всё ушли минуты.
                +2
                А вот вы меня сделали ;)

                Опять же не надо было читать книжки. Там про Rails installer говорилось, что он включает апач. Чего мне только и не хватало для счастья.

                Сейчас посмотрел, убедился что там ничего лишнего нет. В итоге сам себе придумал приключения и ещё и статью об них написал.

                Народ правильно топик минусует.
                  0
                  Сейчас там кривой инсталер пути какие попало пишет в bat файлах.
                  Фактически ничего не работает из коробки, только если руками долго и упорно всё менять
                  https://github.com/railsinstaller/railsinstaller-windows/issues/72
                  0
                  И все-таки, зачем? Почему не виртуальная машина?
                    0
                    завчем виртуальная машина? 0.о
                      +3
                      Я понимаю, что возможно это звучит как «не читал, но осуждаю», но на ruby все-таки сразу начинать писать на никсах. В гуглогруппе ror2ru самые странные и непонятные ошибки обычно как раз бывают с трейсом типа «C:/Ruby187/lib/ruby/gems/1.8/devise-1.0.4/...:357». И отвечают на такое обычно «поставьте линукс или хотя бы виртуалку».
                        –1
                        Ну может я такой извращенец, но сколько пишу под линух (притом прекрасно себя чувствую в vim'e), таки стараюсь собрать разработческую среду под виндой. Понимаю, что это читсая психология, но поделать ничего не могу ;)
                          0
                          Ну со своей стороны, я не скажу, что под линухом всё происходит идеально. Тоже есть свои заморочки: установить RVM, проконтроллировать, чтоб 1.9.2 был дефолтным. Не скажу, что конкретно эти шаги сложные, но с непривычки могут быть проблемы.

                          Да и каких-то стандартных некросспрлатформенных библиотек я в Rails пока не видел. Проект абсолютно спокойно может одновременно работать и под виндой и под линуксом.

                          ЗЫ: Devise отлично работает под виндой )
                            0
                            Ну так потому это и происходит, что слишком мало рельсовых разработчиков работают на винде и авторы многих gem-ов не тестируют их под Windows вообще (или в последнюю очередь).
                            Чем больше будет Windows разработчиков, тем меньше будет багов у руби на этой системе.
                        0
                        — 1.8.7 совершенно не наш метод. Зачем его вообще было ставить? 1.9.2 ставится отлично, работает быстрее. Короче, плохой совет ставить сейчас 1.8.7

                        — совершенно не описана установка MySQL. А это важно. Если ставить без инсталлеров, то там нужно искать одну такую маленькую dll-ку из InstantRails. Впрочем, находится она быстро, но если не знать что искать — будут проблемы.
                          0
                          1. Под 192, у меня на двух машинах, произошел облом с gem install rails

                          2. а вот про это можно подробнее =- поскольку следующий шаг это как раз прикручивание MySQL или Postgres'a $)
                            0
                            1. Честно, не помню каких-либо проблем с этим. Впрочем, даже если они будут, стоит их преоодолеть.
                            2. Вам нужен будет файл libmySQL.dll, который входил в InstantRails, сейчас возможно и в других пакетах есть. Его стоит скопировать в Ruby/bin и тогда мускуль заработает.
                              0
                              libmysql.dll лежит в папке с мускулем, зачем instantrails искать, не понимаю.
                              0
                              1.9.2 прекрасно ставится. Но есть пару подводных камней, для 1.9.2 надо будет пересобрать монгрел и склайт, т.к из гемов ставится бинарная версия собранная на 1.8.7.
                            0
                            вот еще пример автоматической установки
                            habrahabr.ru/blogs/ror/125150/
                              0
                              Спасибо. Видел этот топик, но мне не хотелось завязываться на какой-либо промышленный веб сервер (IIS, Apache). Хотелось легкий асинхронный сервер, чтобы за счёт единой среды выполнения иметь возможность не терять ресурсы на (де)сериализацию страшных структур в памяти.
                              +2
                              И все же нужно ставить под никсы. Даже если весь инструментарий есть под виндой, руби-серверу лучше крутиться на какой-нибудь никсовой виртуалке. Причина банальна — многие гемы никак не хотят заводиться под виндой. Например, я так и не смог победить nokogiri, у многих возникают проблемы с devise, selenium-webdriver, вроде, тоже не работает. Так что оно того не стоит — принципиально ставить под виндой.
                                0
                                +1 Я из-за therubyracer под виртуалкой на линуксе поставил.
                                  0
                                  полез гуглить device, selenium, nokogiri и therubyracer — наверно что-то вкусное ;)
                                    0
                                    Devise — гем для аутентификации из коробки. Selenium — библиотека для тестирования приложений в реальных браузерах. Nokogiri — гем для разбора всяких xml, html, etc. Rubyracer — гем для запуска JS внутри руби-кода. На начальном этапе, на самом деле, вам из всего этого только devise понадобится.
                                      0
                                      спасибо)
                                      +3
                                      Нужно не гуглить, а гитхабить.
                                    0
                                    Думаю как в это упрусь, перелезу на линукс, точнее на фрю, виртуалка с которой осталась с прошлой работы, но её поднимать лень.

                                    Но надеюсь не упрусь — у меня слишком простые задачи, чтобы обрастать гемами. Когда решу их хоть в виде прототипа — ессно задеплоюсь на удаленный сервер, где и организу себе песочницу, благо screen+vim — почти дом родной.
                                      +1
                                      Знаете, за что люди любят рельсы (помимо очевидных вещей)? Любую задачу можно сделать еще проще посредством гемов. Так вот и у вас. Для простой задачи можно тут же применить inherited_resources. Держу пари, у вас будет аутентификация — привет devise. Думаю, вы захотите иметь большую гибкость в запросах — на сцену выходит Squeel. Формы поиска без заморочек? Ransack. Легкий постраничный вывод — kaminari. Генерация тестовых данных — Fabrication + FFacker. Ну и, в конце концов, нужно сразу привыкать к сладкому — Haml вместо Erb и Scss вместо css (+ как вариант, Coffeescript вместо JS). И вот мы уже обрастаем гемами и делаем нашу жизнь веселее.
                                        0
                                        ччёрт, я знал, что там где-то есть надпись мелким шрифтом)))
                                          –1
                                          И все же кому-то нужно быть первым. Если мы не станем использовать рельсы под виндой, то и авторы gem-ов никогда не поправят в них ошибки связанные с таким использованием. А так чем больше разработчиков, тем скорее.

                                          И спасибо за статью! Радует что эта тема актуальна, несмотря ни на какие насмешки.
                                            +1
                                            Не надо гемы под виндой!
                                            Пусть лучше занимаются нужными делами!
                                    0
                                    Может быть это и универсальный метод установки рельсов. Но у меня все из коробки завилось. Еще раз доказывает как неожиданно ведет себя Win.
                                    PS.
                                    ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
                                    Rails 3.1.0
                                      0
                                      я так понимаю, автор читал книги по rails2, а установил rails3 и поэтому негодует
                                        +1
                                        я разве негодую))) я нашёл новую интересную игрушку и очень этому рад, несмотря, что в моих не совсем прямых лапках она не хочет сразу мурлыкать и мяукать )
                                          0
                                          а теперь задание №2
                                          найдите нормальное объявление о том, что требуется программист на Rails, в котором нет предложения «знание Linux обязательно».
                                            0
                                            Я вообще-то системный аналитик. Хотя много работаю и «на земле» (как ни странно, сейчас зарплаты программистов со специфическими знаниями и багажом выше зарплат аналитиков).

                                            Но вот несмотря на то, что под никсами для меня не проблема работать — администрировать не люблю и считаю, что для этого есть специальные люди. Которые это дело любят и получают за это сооветствующую з/п (никсовый админ с маленькой з/п — это страшная катастрофа).

                                            Когда же мне нужно «пощупать» продукт на предмет можно ли на нём сделать маленький личный проект «чтобы вот»… Мне предпочтительнее винда.
                                              0
                                              мир Rails — это мир Linux или MacOS. С виндой в рельсах всегда были большие проблемы, на которые в общем-то всем вполне оправданно плевать.
                                              А для установки рельсов под пингвином навыков администрирования надо явно меньше, чем вы проявили при установке их под винду.
                                              и поймите, во мне говорит не ненавистник винды сейчас. просто я тоже гемы пишу и свои, по чуть-чуть контрибьючу в чужие. и знаю хорошо, что ужаса с поддержкой винды в гемах не нужно никому.
                                                0
                                                Да дело в другом. Мне нужно попробовать — поиграться. Ради этого поднимать виртуалку ломает. Ну не сложно (где-то валяется пара образов, которые нужно только подхватить), но вот реально ломает.

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

                                                И опять же дело не только во мне. У того же ПХП куча «поклонников» из-за низкого порога вхождения. Потому как поставить пхп под что попало и хелловорднуться, дело дурное.
                                                  0
                                                  Лучше испытайте непреодолимое желание задебианить ;)
                                                  Даже если проблемы с gems вас не напрягут, напряжет тормозной интерпретатор руби.
                                                  Например когда вы начнете использовать guard и ждать прогона тестов по полминуты.
                                            0
                                            и вообще, товарищи, 60% статей о rails на хабре — о том, как их ставить. вам не стыдно? в конце концов, вы создаёте предвзятое мнение!
                                              0
                                              Ну, блин. Котерова на них не хватает.
                                                0
                                                Для того чтобы не было таких статей, особенно таких малограмотных статей как моя, достаточно на русскоязычном руби сайте сделать маленький раздельчик по установке. Тогда никаких статей не будет.

                                                Всё равно, как минимум половина нюбов попытается поставить рельсы под мастдай.
                                                  0
                                                  ЗЫ. Текущий раздельчик не работает. Если сделать так как в нем написано — то ничего не получится. Я не плюнул и таки с помощью лома и такой-то матери поставил рельсы о чем и написал пост.

                                                  Да я поспешил со статьей, посколько недогуглился до railinstaller, но это не повод минусовать карму.

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

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

                                                  Нюбов надо подтапливать, чтобы не создавать конкуренции. Поздравляю.
                                                    0
                                                    Даже если все вокруг начнут вам помогать (что они и делают, советуя сразу перейти на линукс), конкурентоспособным вы станете лет через десять, а может и никогда, так что топить вас нет резона :)
                                                0
                                                >> «Add Ruby to PATH» более чем желательна
                                                имхо не желательно, т.к. если занимаешься рельсами плотно, то обязательно на винте организовывается несколько версий (1.8.7 и 1.9.2 как минимум).А еще, если повезет, то и с разным наборов гемов :)
                                                  0
                                                  Убрал.

                                                  Статья для таких же новичков как я. Думаю к тому времени, когда у человека будет стоять две версии с разным набором гемов проблем с _первоначальной_ установкой рельс у него не будет.
                                                  0
                                                  На работе стоит винда и нет возможности установить линух (из-за некоторых специфичных приложений). А в виртуалке запускать как-то не хотелось.

                                                  Поставил руби 1.9.2, завёл. Подключил mysql, установил всё что надо. Работает отлично, глюки замечены только если открывать разрабатываемый сайт в опере (почему-то изредка Ruby вылетает с ошибкой).

                                                  Конечно, очень нехватает милой и уютной никсовой консоли, но что поделать -(. Хоть Cygwin ставь прям.

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое