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/