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

В этом посте я опишу установку 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

58 Comments

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

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

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

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

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

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

          1. $ 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: Нет такого файла или каталога

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

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

            > 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

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

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

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

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

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

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

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

  4. После 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.

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

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

  5. Сейчас ещё одно приложение создал и оттуда запустил:
    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

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

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

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

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

  6. У меня похоже криво 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)

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

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

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

        1. Вот мой конфиг(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

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

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

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

    1. О, Санёк! Привет, рад видеть тебя в своём уютненьком 🙂

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

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

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

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

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

  10. Увидел неприятное сообщение: «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

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

    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’):

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

    2. мне кажется дело не в статике, просто стэк вылез, сделай базу и всё

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

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

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

Leave a Reply to Илья Cancel reply