YARN/Установка

Материал из NLPub
Перейти к: навигация, поиск
Инструкции по установке редактора YARN
Warning.svg Автор: Дмитрий Усталов при поддержке РГНФ[1].

Редактор тезауруса YARN разработан с использованием Ruby on Rails и в целях переносимости работает на JRuby. Это руководство призвано пролить свет на установку и запуск окружения YARN.

Предполагается, что на компьютере уже установлена последняя версия Oracle JDK и работает Git.

Также необходимо иметь установленный PostgreSQL с пустой базой yarn_development, доступной локально пользователю yarn с паролем yarn. Без настройки СУБД приложение не запустится. Для Microsoft Windows существуют готовые дистрибутивы, которые хорошо документированы и включают в стандартную поставку удобную графическую утилиту pgAdmin III.

Важно отметить, что запустить редактор на других СУБД не представляется возможным: в приложении используются различные специфичные вещи, вроде ARRAY-типов и SQL-операций над ними.

Вообще, рекомендуется работать под Unix-подобными системами, хотя при использовании JRuby проблем возникнуть не должно. Для редактирования кода можно использовать как большие и серьёзные IDE: Aptana RadRails, JetBrains RubyMine, так и обычные текстовые редакторы.

Установка будет выполнена в три шага: развёртывание JRuby, первичная настройка окружения Ruby on Rails, запуск сервера приложений.

Развёртывание JRuby

JRuby — это реализация языка программирования Ruby на платформе Java. Использование JRuby по сравнению с MRI — каноничной реализацией языка, обусловлено двумя факторами:

  • отсутствием проблем с совместимостью гемов — библиотек Ruby, которые не всегда способны работать под Windows при использовании кода на Си;
  • высокой производительностью в продакшне.

Microsoft Windows

Скачать последнюю версию JRuby можно на странице загрузки, где стоит выбрать версию, соответствующую архитектуре процессора: JRuby 1.7.3 Windows Executable или JRuby 1.7.3 Windows Executable (x64).

Важно при установке не снимать галочку Configure Path for me (recommended), при включении которой установщик самостоятельно допишет нужные пути в PATH, что избавит от головной боли при использовании инструментов командной строки.

Проверить работоспособность установленного JRuby можно, выполнив команды jruby и gem.

C:\Users\dmchk>jruby --version
jruby 1.7.3 (1.9.3p385) 2013-02-21 dac429b on Java HotSpot(TM) Client VM 1.7.0_17-b02 [Windows 8-x86]
C:\Users\dmchk>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.3 (2013-02-21 patchlevel 385) [java]
  - INSTALLATION DIRECTORY: c:/jruby-1.7.3/lib/ruby/gems/shared
  - RUBY EXECUTABLE: c:/jruby-1.7.3/bin/jruby.exe
  - EXECUTABLE DIRECTORY: c:/jruby-1.7.3/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-java-1.7
  - GEM PATHS:
     - c:/jruby-1.7.3/lib/ruby/gems/shared
     - C:/Users/dmchk/.gem/jruby/1.9
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--no-rdoc --no-ri --env-shebang"
     - "update" => "--no-rdoc --no-ri --env-shebang"
  - REMOTE SOURCES:
     - http://rubygems.org/

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

C:\Users\dmchk>gem install bundler
Fetching: bundler-1.3.2.gem (100%)
Successfully installed bundler-1.3.2
1 gem installed

GNU/Linux, Mac OS X, etc

JRuby представлен в репозиториях разных дистрибутивов GNU/Linux, например в Fedora.

dmchk@tazik{~}% sudo yum info jruby
Loaded plugins: langpacks, presto, refresh-packagekit
Available Packages
Name        : jruby
Arch        : noarch
Version     : 1.6.3
Release     : 3.fc17
Size        : 7.4 M
Repo        : fedora/18/x86_64
Summary     : Pure Java implementation of the Ruby interpreter
URL         : http://jruby.org/
License     : (CPL or GPLv2+ or LGPLv2+) and ASL 1.1 and MIT and Ruby
Description : JRuby is a 100% Java implementation of the Ruby programming language.
            : It is Ruby for the JVM. JRuby provides a complete set of core "builtin"
            : classes and syntax for the Ruby language, as well as most of the Ruby
            : Standard Libraries.

Также можно воспользоваться RVM для установки необходимого программного обеспечения.

root@tazik{~}# \curl -L https://get.rvm.io | bash -s stable --ruby=jruby
...
root@tazik{~}# rvm install jruby
Searching for binary rubies, this might take some time.
jruby-1.7.3 - #configure
jruby-1.7.3 - #download
jruby-1.7.3 - #validate archive
jruby-1.7.3 - #extract
jruby-1.7.3 - #validate binary
jruby-1.7.3 - #setup
Saving wrappers to '/usr/local/rvm/wrappers/jruby-1.7.3'................................
jruby-1.7.3 - #importing default gemsets, this may take time ..........................
root@tazik{~}# rvm jruby --default

Проверить функционирование JRuby можно при помощи команд jruby и gem.

dmchk@tazik{~}% jruby --version
jruby 1.7.3 (1.9.3p385) 2013-02-21 dac429b on Java HotSpot(TM) 64-Bit Server VM 1.7.0_15-b03 [linux-amd64]
dmchk@tazik{~}% gem env  
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.3 (2013-02-21 patchlevel 385) [java]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/jruby-1.7.3
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/jruby-1.7.3/bin/jruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/jruby-1.7.3/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-java-1.7
  - GEM PATHS:
     - /usr/local/rvm/gems/jruby-1.7.3
     - /usr/local/rvm/gems/jruby-1.7.3@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--env-shebang"
     - "update" => "--env-shebang"
     - "gem" => "--no-ri --no-rdoc"
     - :sources => ["http://rubygems.org"]
     - :ssl_verify_mode => 0
  - REMOTE SOURCES:
     - http://rubygems.org

Если установка JRuby выполнялась вручную или из репозитория, то есть не из RVM, то нужно установить установить гем под названием bundler, управляющий зависимостями нашего приложения.

root@tazik{~}# gem install bundler
Fetching: bundler-1.3.2.gem (100%)
Successfully installed bundler-1.3.2
1 gem installed

Первичная настройка окружения Ruby on Rails

Сначала нужно сделать локальную копию репозитория YARN с GitHub. В данный момент код редактора временно расположен по адресу https://github.com/russianwordnet/yarn, однако в ближайшем будущем данные изменения окажутся в апстриме.

dmchk@tazik{~/Work}% git clone 'git://github.com/xoposhiy/yarn.git'
Cloning into 'yarn'...
remote: Counting objects: 133, done.
remote: Compressing objects: 100% (98/98), done.
remote: Total 133 (delta 16), reused 129 (delta 12)
Receiving objects: 100% (133/133), 187.95 KiB | 85 KiB/s, done.
Resolving deltas: 100% (16/16), done.

Затем, необходимо установить все зависимости приложения, перечисленные в Gemfile. Это можно сделать, выполнив команду bundle. Не помешает исключить из установки зависимости, необходимые в продакшне.

dmchk@tazik{~/Work/yarn/editor}% bundle --without production
Using rake (10.0.3)
...
Using uglifier (1.3.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Наше приложение готово к запуску на локальном компьютере. Желательно выполнить миграции, чтобы содержимое базы в нашей СУБД соответствовало схеме данных приложения.

dmchk@tazik{~/Work/yarn/editor}% rake db:migrate
==  CreateUsers: migrating ====================================================
-- create_table(:users)
   -> 0.0440s
-- change_table(:users)
   -> 0.0480s
   -> 0 rows
==  CreateUsers: migrated (0.0920s) ===========================================

==  CreateEntries: migrating ==================================================
-- create_table(:entries)
   -> 0.0500s
-- change_table(:entries)
   -> 0.0840s
   -> 0 rows
==  CreateEntries: migrated (0.1340s) =========================================

Запуск сервера приложений

Для запуска редактора YARN достаточно выполнить в консоли одну простую команду: rails server, или сокращённо rails s. После этого приложение будет загружено в сервер приложений и доступно по адресу http://localhost:3000/.

dmchk@tazik{~/Work/yarn/editor}% rails s     
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-03-12 05:27:08] INFO  WEBrick 1.3.1
[2013-03-12 05:27:08] INFO  ruby 1.9.3 (2013-02-21) [java]
[2013-03-12 05:27:08] INFO  WEBrick::HTTPServer#start: pid=8884 port=3000

Важно отметить, что все изменения кода приложения будут подгружены без перезапуска сервера приложений. Также рекомендуется использовать не сервер WEBrick, а более производительный сервер Puma. Для этого нужно передать команде запуска идентификатор необходимого сервера: rails s puma.

dmchk@tazik{~/Work/yarn/editor}% rails s puma
=> Booting Puma
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Puma 1.6.3 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:3000

После этого, редактор доступен через браузер по адресу http://localhost:3000/.

Примечания

  1. Исследование выполняется при финансовой поддержке РГНФ (проект № 13-04-12020 «Новый открытый электронный тезаурус русского языка»).