Быстрая установка Ruby on Rails 3 и Ruby из пакетов на Ubuntu

// Ноябрь 8th, 2010 // MySQL, Ruby, Ruby on Rails

В этом посте я опишу установку Ruby on Rails и самого Ruby из пакетов. Это не в пример проще, чем установка его из исходников. К тому же пакеты проще администрировать. Установка производилась на чистой Ubuntu 10.10. В конце статьи будет одна строка для apt-get’а, которая сразу всё поставит, для тех кому лень читать. Думаю это сильно облегчит новичкам знакомство с миром Rails.

Подготавливаем систему (ставим недостающие пакеты)

Если вы уверены, что эти пакеты уже стоят, то можете их не ставить. Для работы с mysql они обязательны.

> sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysql-ruby libmysqlclient-dev

Ставим Ruby1.8 и RubyGems из пакетов

Версия 1.8 руби выбрана потому, что, например, Radiant CMS не работает под 1.9.*

> sudo apt-get install ruby1.8 ruby1.8-dev libruby1.8-extras libdbd-mysql-ruby1.8 rubygems1.8 rubygems-doc rdoc

Ставим Rails 3.0.0 и другие гемы

Перед version идёт два дефиса («—«).

> sudo gem install tzinfo builder memcache-client rack rack-test erubis mail text-format bundler thor i18n sqlite3-ruby
> sudo gem install rack-mount —version=0.4.0
> sudo gem install rails —version=3.0.0

Делаем симлинки

> sudo ln -s /var/lib/gems/1.8/bin/rails /usr/local/bin/rails
> sudo ln -s /var/lib/gems/1.8/bin/bundle /usr/local/bin/bundle
> sudo ln -s /var/lib/gems/1.8/bin/rake /usr/local/bin/rake

Проверяем установку

> ruby -v
ruby  1.8.7 (2010-06-23 patchlevel 299) [i686-linux]
> gem -v
1.3.7
> rails -v
Rails 3.0.0

Создаем тестовое приложение

> mkdir /home/andrey/ruby/
> cd /home/andrey/ruby/
> rails new testapp —database=mysql
> cd ./testapp

Правим конфиг /config/database.yml в котором заполняем пароль (password: «pass_for_root»). Затем устанавливаем гемы, необходимые для тестового приложения.

> sudo bundle install

Sudo здесь используется, т.к. сначала идёт попытка установить гемы в общесистемный каталог гемов. У меня это /var/lib/gems/1.8/. И лучше ставить именно тудаю Если прав не хватит, то установка пойдёт вдомашний каталог текущего пользователя, что не очень хорошо. Запускаем rails сервер, с помощью команды:

> rails server

Далее заходим по адресу http://localhost:3000/


И вуаля, видим наше тестовоевеб-приложение.

Установка одной строкой

Указанные команды ставят Ruby on Rails. Как тестировать установку и создавать тестовое приложение написано выше.

sudo apt-get install install mysql-server-5.1 mysql-client-5.1 libmysql-ruby libmysqlclient-dev ruby1.8 ruby1.8-dev libruby1.8-extras libdbd-mysql-ruby1.8 rubygems1.8 rubygems-doc; sudo gem install tzinfo builder memcache-client rack rack-test erubis mail text-format bundler thor i18n sqlite3-ruby; sudo gem install rack-mount --version=0.4.0; sudo gem install rails --version=3.0.0; ln -s /var/lib/gems/1.8/bin/rails /usr/local/bin/rails; ln -s /var/lib/gems/1.8/bin/bundle /usr/local/bin/bundle; ln -s /var/lib/gems/1.8/bin/rake /usr/local/bin/rake;

Если есть вопросы, пишите в комментариях.

UPD: Вообще народ делает очень хорошую штуку — Ubuntu on Rails. Но пока её нет в репозитариях. Только на launchpad.

UPD: Если вам не важно, какую версию Rails ставить, то установкастановится ещё проще:

sudo apt-get install rails

После этого установится Rails 2.3.5

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


58 Responses to “Быстрая установка Ruby on Rails 3 и Ruby из пакетов на Ubuntu”

  1. Большущее спасибо! Установил все без проблем.

    • google.com Андрей Токарчук:

      Пожалуйста, Александр!
      Вот ради таких комментов я и завел этот блог! Всегда рад помочь!

  2. dns:

    dns@dns-desktop:~/ruby$ sudo bundle install
    Could not locate Gemfile

    в чем проблема?

    • google.com Андрей Токарчук:

      Напишите сюда ваш Gemfile, тогда смогу сказать точнее. Пока похоже на то, что один из репозиатриев недоступен, где гемы лежат.

  3. Токарчук рулит ) статья помогла ) спасибо )))

  4. Илья:

    Не получается выполнить sudo gem install rails —version=3.0.0
    Пишет: «ERROR: Could not find a valid gem ‘–version=3.0.0’ (>= 0) in any repository».
    Подключенные гемы:
    *** CURRENT SOURCES ***
    http://rubygems.org/
    http://gems.rubyonrails.org
    В чем мб проблема?

  5. Илья:

    Да я пониманию, в репозиториях есть и 3.0.0 и 3.0.3. Это ситуацию не изменит.

  6. Илья:

    «ERROR: Could not find a valid gem ‘–version=3.0.3′ (>= 0) in any repository».
    В винде поставил рельсы без проблем, но не могу зающать руби в геме pik. После команды pik use 187, руби все равно не работает за пределами бинарника.
    Не рельсы блин, а магия.

    • google.com Андрей Токарчук:

      Попробуйте удалить gems.rubyonrails.org из источников, и попробовать снова.
      $ gem sources -r http://gems.rubyonrails.org
      См. http://forums.pragprog.com/forums/148/topics/4567

      • Илья:

        Да, я это видел. Этого репозитория и не было изначально. Была такая же ошибка и я его добавил.
        В общем поставил я рельсы. Поставил из репа руби, рубигемс и выполнил sudo gem install rails и все, на борту 3.0.3. Единственное, не знаю как сделать по дефолту их, т.к. стоят рельсы 2 из репа, а пик не работает почему то :)

        • google.com Андрей Токарчук:

          Отлично! Так надо вторые убрать:
          sudo gem uninstall rails

          • Илья:

            $ sudo gem install rails
            Successfully installed rails-3.0.3
            1 gem installed
            Installing ri documentation for rails-3.0.3…
            File not found: lib

            $ rails -v
            bash: /usr/bin/rails: Нет такого файла или каталога

            система не видит рельсы

          • google.com Андрей Токарчук:

            Просто симлинков не хватает:

            > sudo ln -s /var/lib/gems/1.8/bin/rails /usr/local/bin/rails
            > sudo ln -s /var/lib/gems/1.8/bin/bundle /usr/local/bin/bundle
            > sudo ln -s /var/lib/gems/1.8/bin/rake /usr/local/bin/rake

  7. Илья:

    Вот в том и дело, что симлинки сделал, а рельсов не видно. После ребута увидел свои рельсы, ура :) Спасибо за помощь.
    Вы не пробовали rvm? Читал, что проще устанавливать и следить за рельсами.

  8. Roman:

    У меня не в какую не хочет открываться http://localhost:3000 :-(
    Ruby — 1.8.7
    Gem — 1.5.2
    Rails — 3.0.4
    В чём может быть проблема?

    • google.com Андрей Токарчук:

      А rails server то запускали? Windows? Файерволом не заблокирован, порт не занят?

      • Roman:

        > А rails server то запускали?
        Конечно. Делал всё как официальном сайте описано http://rubyonrails.org/download

        > Windows?
        Боже упаси! :-) У меня Ubuntu Server 10.04.1

        > Файерволом не заблокирован, порт не занят?
        Каспера на компе отключал, всё равно не показывает. А как проверить не занят ли порт?
        Пробовал и так http://127.0.0.1:3000 и так http://127.0.0.1 но всё равно ничего не показывает :(

        • google.com Андрей Токарчук:

          Ну т.е. рельсы в процессах есть?
          Порты можно глянуть так: netstat -l

          • Roman:

            Забавно у меня получается — Ruby есть в процессах, а Rauls нет :)
            Порт не занят.

  9. Roman:

    После rails server выдаёт:
    root@**********:~# rails server
    Usage:
    rails new APP_PATH [options]

    Options:
    -G, [—skip-git] # Skip Git ignores and keeps
    [—dev] # Setup the application with Gemfile pointing to your Rails checkout
    -b, [—builder=BUILDER] # Path to an application builder (can be a filesystem path or URL)
    [—edge] # Setup the application with Gemfile pointing to Rails repository
    [—skip-gemfile] # Don’t create a Gemfile
    -r, [—ruby=PATH] # Path to the Ruby binary of your choice
    # Default: /usr/bin/ruby1.8
    -d, [—database=DATABASE] # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db)
    # Default: sqlite3
    -O, [—skip-active-record] # Skip Active Record files
    -J, [—skip-prototype] # Skip Prototype files
    -T, [—skip-test-unit] # Skip Test::Unit files
    -m, [—template=TEMPLATE] # Path to an application template (can be a filesystem path or URL)

    Runtime options:
    -s, [—skip] # Skip files that already exist
    -f, [—force] # Overwrite files that already exist
    -p, [—pretend] # Run but do not make any changes
    -q, [—quiet] # Supress status output

    Rails options:
    -h, [—help] # Show this help message and quit
    -v, [—version] # Show Rails version number and quit

    Description:
    The ‘rails new’ command creates a new Rails application with a default
    directory structure and configuration at the path you specify.

    Example:
    rails new ~/Code/Ruby/weblog

    This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
    See the README in the newly created application to get going.

    • google.com Андрей Токарчук:

      Ага, так а rails server нужно делать находясь в каталоге с приложением. Роман, вы точно оттуда делаете?

      • Roman:

        Да, я делаю из созданного каталога. У меня что-то непонятное:
        Выполняю rails -v
        Пишет Rails 3.0.4
        А в папке /var/lib/gems/1.8/bin/ лежит только файл rake :(

  10. Roman:

    Сейчас ещё одно приложение создал и оттуда запустил:
    root@******:~# cd first
    root@******:~/first# rails server
    => Booting WEBrick
    => Rails 3.0.4 application starting in development on ht tp://0.0.0.0:3000
    => Call with -d to detach
    => Ctrl-C to shutdown server
    [2011-02-15 17:02:51] INFO WEBrick 1.3.1
    [2011-02-15 17:02:51] INFO ruby 1.8.7 (2010-01-10) [x86 _64-linux]
    [2011-02-15 17:02:51] INFO WEBrick::HTTPServer#start: p id=21120 port=3000
    ^C[2011-02-15 17:04:51] INFO going to shutdown …
    [2011-02-15 17:04:51] INFO WEBrick::HTTPServer#start done.
    Exiting

    • google.com Андрей Токарчук:

      Ага, уже лучше. Веб-сервер значит стартует. Теперь остается понять, чего же он падает. По предыдущему комменту — надо сделать симлинки. Похоже, что вы их уже сделали.

      • Roman:

        Нет, я их не сделал как раз потому, что файлов rails и bundle у меня в папке /var/lib/gems/1.8/bin/ нет. :( Вот и пытаюсь разобраться почему.

        • google.com Андрей Токарчук:

          Они наверное установлены в домашнюю папку юзера. Попробуйте их от рута установить, насколько я помню в этом случае они в /var/lib/… ставятся.

          • Roman:

            Но я под рутом и устанавливал всё. Сейчас нашёл:
            /usr/lib/ruby/gems/1.8/gems/rails-3.0.4/bin/rails

  11. Roman:

    У меня похоже криво RoR был установлен. Сейчас попробовал переустановить:
    root@******:~# gem install rails
    Successfully installed rails-3.0.4
    1 gem installed
    Installing ri documentation for rails-3.0.4…
    File not found: lib
    ERROR: While generating documentation for rails-3.0.4
    … MESSAGE: exit
    … RDOC args: —ri —op /usr/lib/ruby/gems/1.8/doc/rails-3.0.4/ri —quiet lib —title rails-3.0.4 Documentation
    (continuing with the rest of the installation)
    Installing RDoc documentation for rails-3.0.4…
    File not found: lib
    ERROR: While generating documentation for rails-3.0.4
    … MESSAGE: exit
    … RDOC args: —op /usr/lib/ruby/gems/1.8/doc/rails-3.0.4/rdoc —quiet lib —title rails-3.0.4 Documentation
    (continuing with the rest of the installation)

  12. Илья:

    После команды Rails server Пишет : Could not find gem ‘sqlite3 (>= 0, runtime)’ in any of the gem sources listed in your Gemfile. Подскажите , что сделать?

    • google.com Андрей Токарчук:

      Скорее всего вы не указали тип БД при создании приложения (rails new testapp –database=mysql)
      поэтому бзается sqlite.

      • Илья:

        указал, но в database.yml
        adapter: sqlite3
        database: db/development.sqlite3
        pool: 5
        timeout: 5000
        как надо исправить?

        • google.com Андрей Токарчук:

          Вот мой конфиг(database.yml), который сгенерил rails new testapp —database=mysql (перед database два дефиса):

          # MySQL. Versions 4.1 and 5.0 are recommended.
          #
          # Install the MySQL driver:
          # gem install mysql2
          #
          # And be sure to use new-style password hashing:
          # http://dev.mysql.com/doc/refman/5.0/en/old-client.html
          development:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: testapp_development
          pool: 5
          username: root
          password:
          socket: /var/run/mysqld/mysqld.sock

          # Warning: The database defined as «test» will be erased and
          # re-generated from your development database when you run «rake».
          # Do not set this db to the same as development or production.
          test:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: testapp_test
          pool: 5
          username: root
          password:
          socket: /var/run/mysqld/mysqld.sock

          production:
          adapter: mysql2
          encoding: utf8
          reconnect: false
          database: testapp_production
          pool: 5
          username: root
          password:
          socket: /var/run/mysqld/mysqld.sock

  13. Андрей, скажите пожалуйста, Я следуя всем вашим рекомендациям по установке RoR и создания тестового приложения последовал и всё получилось, но когда начал делать другой прект на команду ruby script/generate он пишет No such file or directory — script/generate (LoadError)…..В чём может быть дело?

  14. google.com Андрей Токарчук:

    Думаю, неправильно создалось приложение.

  15. Но войдя в папку testapp и пробуя ruby script/generate он отвечает так же..

  16. И в script находится только один файл rails…

    • google.com Андрей Токарчук:

      script/generate было раньше, теперь надо делать rails generate …
      Тоже самое с запуском — rails server

  17. Спасибо большое, всё получилось)))

  18. Саня:

    Спасибо Андрюха!
    и привет из Екб 😉

    • google.com Андрей Токарчук:

      О, Санёк! Привет, рад видеть тебя в своём уютненьком :-)

      • Саня:

        вот ноут взял hp dv6 6051er решил на нём убунту воткнуть. мана помогла твоя )

        • google.com Андрей Токарчук:

          Поздравляю, отличному ноуту — отличная ось!) Рад, что мана помогла.

          • Саня:

            Но с бубном я поплясал — особенно когда решил RVM после устаноки рельс воткнуть, + прыг скок с мускулом от скулайта, ппц.
            И пришлось обратно на бук вернуть винду 7 а сверху виртуалкой с убунту, поскольку нет дров на вайвай у либо они не встают под ось, да еще и падала постоянно под этим буком
            порнография хлеще немецкой

          • google.com Андрей Токарчук:

            Сань, так а надо сначала RVM ставить, а потом уже Rails. А ты думал, всё легко получится? Пмонится я со своим первым линухом (Red Hat какой-то бородатой версии) провел много времени, но потом всё-таки поставил. Если интересно, думаю ты вернешься к этому вопросу и разберешься. Со своей стороны готов оказать всяческую помощь и поддержку.

      • Саня:

        я уже всё замутил, во всю экспериментирую. но если что обращусь

  19. dima:

    Увидел неприятное сообщение: «Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)»
    Если вы используете Ubuntu 11.04, то скорее всего вас ждёт то де самое:-)

    Даная проблема решается просто-надо установить node.js, например так:
    > sudo apt-get install python-software-properties
    > sudo add-apt-repository ppa:chris-lea/node.js
    > sudo apt-get update
    > sudo apt-get install nodejs

  20. Спасибо большое за статью! Все поставилось, теперь будем учить)))

  21. Не заметил сразу. Возникла вот такая ошибка:

    Started GET «/assets/rails.png» for 127.0.0.1 at Tue Nov 15 16:52:49 +0400 2011

    Mysql2::Error (Unknown database ‘testapp2_development’):

  22. […] Подготавливаем систему (ставим недостающие пакеты) Быстрая установка Ruby on Rails 3 и Ruby из пакетов на Ubuntu | Тока… […]

  23. Неплохой набор из двух статей можно прочитать здесь: unixfun.ru/archives/83 и здесь: unixfun.ru/archives/76

    Там на мой взгляд подробнее описана настройка PostgreSQL.

  24. Александр:

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

Комментировать