T
turumbay
На OpenNTF появился новый проект:
Как можно догадаться, цель проекта - дать разработчику возможность использовать Ruby для написания серверных скриптов (наряду со штатным SSJS).
Пример:<!--shcode--><pre><code class='XML'><?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns="http://www.ibm.com/xsp/core">
<xp:text value="#{ruby:Time.now.year}"/>
</xp:view>[/CODE]Реализация основана на JSR 223: к рантайму JSF подключается JRuby, который и исполняет код.
Фичи:
Ссылка скрыта от гостей
. Автор проекта
Ссылка скрыта от гостей
Как можно догадаться, цель проекта - дать разработчику возможность использовать Ruby для написания серверных скриптов (наряду со штатным SSJS).
Пример:<!--shcode--><pre><code class='XML'><?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns="http://www.ibm.com/xsp/core">
<xp:text value="#{ruby:Time.now.year}"/>
</xp:view>[/CODE]Реализация основана на JSR 223: к рантайму JSF подключается JRuby, который и исполняет код.
Фичи:
- Поддерживаются немедленное/отложенное выполнение ( ${expression}, #{expression} ), в том числе, отложенный вызов методов (т.н. defferd method expression)
- Позволяет создавать/использовать "Ruby Script Library". На текущий момент они должны лежать в папке WEB-INF/ruby. Либа подключается на страницу как обычный скрипт, но с атрибутом type="text/ruby" : <xp:script src="/somelibrary.rb" type="text/ruby" clientSide="false" />
- Код может обращаться к "session", "database" и любым другим переменным, доступным через SSJS.
- В комплекте идет небольшая библиотека - обертка для NotesDocumentCollection и NotesDocument, позволяющая итерировать коллекции документов привычным рубистам образом ( т.е. docs.each { |doc| ... } ) и использовать аналог LS-ного расширенного синтаксиса для доступа к полям документа ( doc["Form"] )
- Заложена базовая поддержка других скриптовых языков: если раскомментировать код в frostillicus/ScriptingViewHandler.java, то появится поддержка остальных JSR-223-совместимых языков( например #{
Ссылка скрыта от гостей:...}, или #{Ссылка скрыта от гостей:...} ). Работоспособность таких языков фактически не тестировалась, пример использования можно посмотреть вСсылка скрыта от гостей