Ruby

Категория:Виртуальный хостинг -> Сервисы и средства разработки

Содержание




1. Общие сведения

Динамический интерпретируемый язык программирования высокого уровня. Разработан в середине 90-х (первый публичный резиз – 1995) Юкихиро Мацумото под влиянием Perl, Lisp, SmallTalk?. Ruby объектно-ориентирован, с динамической типизацией.

Возможности:

  • средства обработки исключений
  • полноценный обработчик мусора для всех объектов
  • многопоточность, не зависящая от операционной системы
  • кроссплатформенность (Linux, MacOSX, Windiws, DOS, BEOS)
  • возможность динамически загружать библиотеки расширения
  • возможность разрабатывать расширения для Ruby на C
  • динамическая типизация
  • к настоящему моменту последняя версия Ruby 1.9

Ресурсы, посвященные Ruby

1. Русскоязычные

http://rubyclub.com.ua/ – форум, посвященный ruby on rails
http://rubyflow.ru/ – новости о ruby
http://railsforum.ru/ – форум, посвященный ruby on rails

2. Англоязычные

http://www.ruby-lang.org/ – основной сайт, посвященный Ruby
http://ruby.dzone.com/ – ресурс для разработчиков ruby от rails
http://rubylearning.com/ – обучение Ruby

2. Как организована поддержка Ruby на хостинге?

Ruby Enterprise Edition – это сервер-ориентированный дистрибутив официального интерпретатора Ruby, включающий в себя также различные дополнительные улучшения, такие как более эффективный сборщик мусора, оптимизированный алгоритм переключения контекстов между потоками и процедурами и т.д. Phusion Passenger (mod_rails or mod_rack) – модуль веб-сервера Apache для поддержки приложений на языке программирования Ruby и его фреймворков (например, Rails). Passenger предоставляет приложениям возможность работать с различными версиями библиотек. Phusion Passenger рекомендуется для размещения сайтов на Ruby авторами фреймворка Rails и евангелистами Ruby.


Версию Ruby можно узнать командой:

ruby -v


В настоящее время на хостинге установлен:
ruby 1.8.7 (2010-04-19 patchlevel 253) [x86_64-freebsd6.4], MBARI 0x6770, Ruby Enterprise Edition 2010.02

3. RubyGems

Модули или приложения ruby называются gems (от gem – драгоценный камень). Менеджер пакетов называется RubyGems Список установленных модулей Ruby можно посмотреть командой:

gem list


Если нужно узнать, установлен ли конкретный модуль, например, Rails, дается команда:
gem list rails


Список модулей, доступных для установки, получается командой:
gem list --remote


На нашем хостинге есть возможность установки модулей Ruby для пользователей:
gem list <имя модуля>
gem install <имя модуля>
gem list <имя модуля>


Модули устанавливаются в /home/user/.gems Где вместо user – имя пользователя

Если планируется установить модули, которые по умолчанию отсутствуют на нашем хостинге, следует:

  • Настроить .gemrc
    $ cd ~/
    $ cat << EOF > .gemrc
    gemhome: $HOME/.gems
    gempath:
    - $HOME/.gems
    - /usr/local/lib/ruby/gems/1.8
    EOF
    

  • настроить переменные окружения
    $ cd ~/
    $ cat << EOF >> .bashrc
    export GEM_HOME=$HOME/.gems
    export GEM_PATH=$HOME/.gems:/usr/local/lib/ruby/gems/1.8/
    export PATH=$PATH:$HOME/.gems/bin
    EOF
    

Если установка по каким-либо причинам невозможна, обратитесь к нам в техническую поддержку, и мы с радостью поможем установить необходимый модуль.

4. Ruby on Rails

Ruby On Rails – веб-приложение с открытым исходным кодом. Его цель – сделать проще разработку и уменьшить количество кода. Ruby On Rails использует схему модель-представление-контроллер.

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

Представления: шаблоны (обычно формируются из html и кода Ruby) – это то, как будут представлены в браузере данные, полученные от контроллера. Контроллеры: наборы логики, отвечающие за вызов модели. Они обрабатывает ввод, вызывают доступные методы и формируют представления.


Установка Rails и hello world:

gem install rails


Создаем проект:
rails new ~/www/site12/public_html/


Rails установлен и проект создан Создаем контроллер и представление:
rails generate controller home index

Файл app/views/home/index.html.erb – это шаблон, который будет использоваться для отображения метода index контроллера home.

В любом текстовом редакторе правим его и вводим, к примеру, текст:

<h1>Hello world!</h1>


Удаляем страницу Rails по умолчанию:
$ rm public/index.html


В файле config/routes.rb раскомментируем строку, начинающуюся на «root :to» и вписываем:
root :to => "home#index"


Структура:
  • app: содержит большую часть исходного кода на Ruby и шаблоны вывода, напрямую связанные с приложением
  • app/controllers: Содержит файлы контроллеров
  • app/helpers: помощники для отображения views. Могут быть использованы для размещения методов, предназначенных для отрисовки (rxml, rjs)
  • app/models: содержит файлы для каждой из моделей в приложении. Если проект пустой, каталог пуст
  • app/views: Содержит файлы шаблонов . Обычно каждый контроллер содержит свою подпапку в app/views
  • config: В этой папке хранятся конфигурационные файлы для приложения
  • database.yml конфигурационный файл с информацией о базах данных, используемых приложением. environment.rb и boot.rb обычно не нуждаются в редактировании
  • db: Папка, используемая для дампов, резервных копий базы данных
  • doc: Документация RDoc, созданная для приложения
  • lib: содержит сторонние библиотеки и задания Racks
  • log: Содержит файлы журналов, относящиеся к действиям приложения
  • public: Каталог, доступный веб-серверу. Также содержит .htaccess
  • script: Содержит скрипты и утилиты командной строки , которые используются при создании и развертывании приложений Ruby. Console – утилита, схожая с irb, она загружает окружения rails-приложения перед тем, как предоставить Вам приглашение
  • test: содержит тестовую подсистему приложения
  • tmp: временное хранилище данных
  • vendor: функциональные тесты и их структура

5. FAQ

5.1. С какими привилегиями работают ruby – приложения?

Все ruby – приложения одного сайта выполняются внутри отдельного процесса (экземпляра приложения). Процесс работает с привилегиями владельца сайта.

5.2. Каковы технические ограничения?

Все ruby – приложения одного сайта выполняются внутри одного процесса. На процесс накладываются ограничения по потреблению оперативной памяти (200мб).

5.3. Как я могу увидеть мои ruby – приложения?

Вы можете подключиться по SSH и выполнить команду:

ps auxwww
USER    PID     %CPU     %MEM    VSZ1    RSS    TT    STAT    STARTED TIME    COMMAND
scrtest    43522    0.0    4.9    135528    100004    ??    3:47PM    0:00.09  ruby:Rails: /home/scrtest/www/site2/public_html (ruby)
scrtest    60445    0.0    4.9    135528    100372    ??    4:27PM    0:00.10  ruby:Rails: /home/scrtest/www/site4/public_html (ruby)

В данном случае поддержка Ruby включена для 2 сайтов. Выбрать необходимую для работы платформу для сайта вы можете в нашей панели.

5.4. Почему первый запрос к моему сайту выполняется долго?

При первом запросе к сайту на Ruby происходит импортирование (поиск,чтение, компиляция в byte- код) всех необходимых для работы приложения модулей. Эта операция может занимать несколько секунд, и последующие запросы к сайту будут выполняться быстро.

5.5. Я изменил код приложения, однако не вижу изменений в работе сайта, что делать?

Для достижения высокой скорости работы Passenger импортирует все модули только 1 раз (при первом запросе). Для перезагрузки ruby – приложения нужно выполнить команду touch (изменить время модификации) на файл перезапуска ruby-приложения:

touch ~/www/site12/public_html/tmp/restart.txt

5.6. Как увеличить производительность моих Ruby-приложений?

По умолчанию Phusion Passenger совместим с остальными модулями Apache, работа которых может вызывать дополнительные накладные расходы. Passenger предоставляет опцию PassengerHighPerformance?, позволяющую отключить совместимость с некоторыми модулями, тем самым время обработки запроса немного сократится. Однако использовать эту опцию нужно с осторожностью, предварительно протестировав и убедившись, что отключаемая совместимость с модулями Apache не требуется для работы Вашему сайту:

PassengerHighPerformance on

5.6. Ничего не работает, я получаю ошибку 500!

Для диагностики необходимо проверить лог-файл Вашего приложения.

5.7. Какое количество сайтов на Ruby я могу создать?

В настоящее время количество сайтов с Ruby–приложениями отдельно не лимитируется. Однако общее число сайтов ограничивается параметрами Вашего тарифного плана.

Категории:

загрузка…