М.: ДМК Пресс, 2010. — 236 с. ISBN 978-5-94074-589-1.
Интересующемуся языком JRuby вряд ли нужны руководства по Ruby,
Rails или Java – требуется лишь узнать, как решить ту или иную
конкретную задачу. В этой книге вы найдете практические рецепты по
работе с данной реализацией языка Ruby на платформе Java.
Специально рассмотрены такие вопросы, как развертывание
веб-приложений Rails на Java-серверах, интеграция программ на JRuby
с технологиями из мира Java, разработка персональных приложений на
JRuby с помощью инструментальных библиотек на Java и многое другое.
Интерпретатор JRuby сочетает в себе простоту и легкость
использования Ruby с развитыми библиотеками и технологиями Java, и
это открывает совершенно новые возможности для применения Ruby,
Rails и Java. Эта книга даст вам возможность воспользоваться всем
потенциалом языка JRuby.
JRuby on Rails
В дополнение к JRuby-Rack команда разработчиков JRuby создала инструмент Warbler для упаковки приложения Rails в WAR-файл; это позволяет упростить развертывание. В середине этой главы мы рассмотрим шаги развертывания приложений Rails на основных серверах приложений Java ЕЕ с открытым исходным кодом. Хотя все эти рецепты похожи, мы сочли важным описать детали, специфичные для каждого контейнера. В последних рецептах из этой главы речь пойдет о некоторых дополнительных конфигурационных параметрах и сценариях совместного использования JRuby и Rails. Выполнение Ruby-кода из Java-приложения
Требуется выполнить некоторый Ruby-код из Java-приложения. Получите экземпляр класса org. jruby.Ruby и вызовите метод evalScriptlet (). В классе org. j ruby. j avasupport. JavaEmbedUtils имеются статические фабричные
методы для создания экземпляра среды исполнения JRuby. В примере показано, как можно использовать эти классы. Определение Spring-компонентов на JRuby
Вы используете каркас Spring Framework в качестве контейнера с внедренной зависимостью (Dependency Injection – DI) и хотели бы некоторые компоненты написать на JRuby. Определите на Java интерфейс, определив в нем методы, которые будут реализованы в Ruby-классе. В XM L-файл, описывающий конфигурацию Spring, включите элемент jruby в пространстве имен lang и определите в нем компонент, указав интерфейс и местоположение Ruby-сценария. Написанные на JRuby компоненты можно конфигурировать также с помощью элемента lang:property. Определение простого компонента на JRuby приведено в примере. Написание задания Ant на Ruby
Требуется выполнить один и тот же Ruby-сценарий в нескольких файлах сборки Ant. Воспользуйтесь элементом Ant scriptdef, в котором определите задание, состоящее в выполнении Ruby-сценария. У элемента scriptdef имеется дочерний элемент attribute, позволяющий передавать заданию атрибуты. В примере определено задание Ant start-webrick, которое можно использовать для запуска HTTP-сервера WEBrick с заданными номером порта и корневой папкой документов. Обычно для прогона автоматизированных тестов требуется выполнять много подготовительного кода. Применение таких предметно-ориентированных языков (DSL), как dust и Expectations, написанных на Ruby, позволяет заметно уменьшить объем этого повторяющегося кода. На динамическом языке очень просто создавать mock-объекты. Например, JRuby позволяет непосредственно инстанцировать интерфейсы Java. Механизм открытых классов позволяет модифицировать код во время выполнения, что тоже упрощает тестирование.
В дополнение к JRuby-Rack команда разработчиков JRuby создала инструмент Warbler для упаковки приложения Rails в WAR-файл; это позволяет упростить развертывание. В середине этой главы мы рассмотрим шаги развертывания приложений Rails на основных серверах приложений Java ЕЕ с открытым исходным кодом. Хотя все эти рецепты похожи, мы сочли важным описать детали, специфичные для каждого контейнера. В последних рецептах из этой главы речь пойдет о некоторых дополнительных конфигурационных параметрах и сценариях совместного использования JRuby и Rails. Выполнение Ruby-кода из Java-приложения
Требуется выполнить некоторый Ruby-код из Java-приложения. Получите экземпляр класса org. jruby.Ruby и вызовите метод evalScriptlet (). В классе org. j ruby. j avasupport. JavaEmbedUtils имеются статические фабричные
методы для создания экземпляра среды исполнения JRuby. В примере показано, как можно использовать эти классы. Определение Spring-компонентов на JRuby
Вы используете каркас Spring Framework в качестве контейнера с внедренной зависимостью (Dependency Injection – DI) и хотели бы некоторые компоненты написать на JRuby. Определите на Java интерфейс, определив в нем методы, которые будут реализованы в Ruby-классе. В XM L-файл, описывающий конфигурацию Spring, включите элемент jruby в пространстве имен lang и определите в нем компонент, указав интерфейс и местоположение Ruby-сценария. Написанные на JRuby компоненты можно конфигурировать также с помощью элемента lang:property. Определение простого компонента на JRuby приведено в примере. Написание задания Ant на Ruby
Требуется выполнить один и тот же Ruby-сценарий в нескольких файлах сборки Ant. Воспользуйтесь элементом Ant scriptdef, в котором определите задание, состоящее в выполнении Ruby-сценария. У элемента scriptdef имеется дочерний элемент attribute, позволяющий передавать заданию атрибуты. В примере определено задание Ant start-webrick, которое можно использовать для запуска HTTP-сервера WEBrick с заданными номером порта и корневой папкой документов. Обычно для прогона автоматизированных тестов требуется выполнять много подготовительного кода. Применение таких предметно-ориентированных языков (DSL), как dust и Expectations, написанных на Ruby, позволяет заметно уменьшить объем этого повторяющегося кода. На динамическом языке очень просто создавать mock-объекты. Например, JRuby позволяет непосредственно инстанцировать интерфейсы Java. Механизм открытых классов позволяет модифицировать код во время выполнения, что тоже упрощает тестирование.