Статьи

Как запустить приложение Sinatra с помощью JRuby?

RubyLearning проводит бесплатный онлайн-курс по JRuby 101 — первый в своем роде в Google+. Некоторые участники хотели получить ответ на свой вопрос: «Как запустить приложение Sinatra с помощью JRuby?» Этот пост в блоге объясняет то же самое. Читать дальше.

Предпосылка

У меня есть Windows XP, но на компьютерах под управлением Mac и Linux также должно работать следующее.

Убедитесь, что вы уже установили JDK 6, JRuby и задали соответствующие переменные системной среды path , classpath , JAVA_HOME и JRUBY_HOME .

Установить Bundler

Bundler помогает предотвратить конфликтующие или отсутствующие драгоценные камни и сияет, когда пришло время настроить эти зависимости во время установки и выполнения.

JRuby поставляется с достаточно загруженной стандартной библиотекой с нуля, но это не значит, что вам не понадобятся другие вещи. Почти все они устанавливаются как драгоценные камни. RubyGems — это основной инструмент управления пакетами для Ruby. Он отлично работает с судами JRuby и JRuby. Вы используете его через команду gem. Нам потребуется запустить версию команды gem на JRuby и убедиться, что мы используем флаг -S для интерпретатора.

Создайте папку проекта (скажем, c: \ jrubysinatra) на жестком диске. Убедитесь, что ваше интернет-соединение активно. Теперь откройте командное окно в этой папке проекта и введите:

jruby -S gem install bundler

Примечание . Этот подход (jruby -S) работает для любого инструмента командной строки Ruby, включая gem, rake, spec и другие.

Создать Gemfile

Затем в папке вашего проекта создайте Gemfile . Это выглядит примерно так:

source "http://rubygems.org"
gem 'sinatra'

Этот Gemfile говорит о нескольких вещах. Во-первых, он говорит, что упаковщик должен искать драгоценные камни, объявленные в Gemfile на http://rubygems.org . Вы можете объявить несколько источников Rubygems, и bundler будет искать гемы в порядке, в котором вы объявили источники. Далее вам нужно будет перечислить все ваши зависимости приложений там. Однако прямые зависимости Синатры (Rack и Tilt) будут автоматически выбираться и добавляться Bundler.

Чтобы заставить bundler устанавливать зависимости, в уже открытом командном окне введите:

jruby -S bundle install

Поскольку все гемы в вашем Gemfile имеют свои собственные зависимости (и некоторые из них имеют свои собственные зависимости), при запуске jruby -S bundle install в Gemfile выше будет установлено довольно много гемов. Если какой-либо из необходимых драгоценных камней уже установлен, Bundler будет их использовать. После установки любых необходимых драгоценных камней в вашу систему, упаковщик записывает снимок всех драгоценных камней и версий, которые он установил, в Gemfile.lock .

Напишите ваше приложение Синатра

Создайте файл hellojruby.rb в папке c: \ jrubysinatra.

require "rubygems"
require "bundler/setup"

require "sinatra"

get '/hi' do
    "Hello JRuby World!"
end

Настройте приложение Sinatra для использования Bundler

Для вашего приложения Sinatra вам нужно будет настроить упаковщик, прежде чем пытаться потребовать какие-либо драгоценные камни. Вверху первого файла, который загружает ваше приложение (для Sinatra, для файла, который требует «sinatra»), поместите следующий код:

require "rubygems"
require "bundler/setup"

Это автоматически обнаружит ваш Gemfile и сделает все драгоценные камни в вашем Gemfile доступными для Ruby (в техническом плане это помещает драгоценные камни «на путь загрузки»). Вы можете думать об этом как о добавлении некоторых дополнительных способностей, требующих «рубинов».

Теперь, когда ваш код доступен для Ruby, вы можете запрашивать нужные вам гемы. Например, вам может потребоваться «синатра».

Запустите приложение Sinatra

В уже открытом командном окне введите:

jruby -S bundle exec jruby hellojruby.rb

В командном окне вы увидите:

== Sinatra/1.2.6 has taken the stage on 4567 for development with backup from WEBrick
[2011-09-03 07:21:17] INFO  WEBrick 1.3.1
[2011-09-03 07:21:17] INFO  ruby 1.8.7 (2011-08-23) [java]
[2011-09-03 07:21:17] INFO  WEBrick::HTTPServer#start: pid=5128 port=4567

Доступ к приложению Синатра

В вашем браузере перейдите по URL: http: // localhost: 4567 / hi — браузер должен отобразить « Hello JRuby World! «

Это все на данный момент.

 

источник:  http://rubylearning.com/blog/2011/09/03/how-do-i-run-a-sinatra-app-using-jruby/