2010-10-12 2 views
6

Я только что начал с JRuby on Rails и абсолютно обожаю его. Я знаю, как использовать текущие классы в Java API в моем приложении Rails, но если бы я хотел создать новый пользовательский класс, написанный на чисто Java-коде, как бы я мог использовать его в своем приложении Rails?JRuby on Rails: использование пользовательских классов Java в приложении Rails

Например, скажем, я создал Dog.java:

class Dog { 
    private String name; 

    public Dog() { 
    name = "Fido"; 
    } 

    public String getName() { 
    return name; 
    } 
} 

Как я смог бы создать новый объект Dog (Dog.new) в моем приложении Rails? Мне нужно поместить файл Dog.java или Dog.class где-нибудь, а затем вызвать некоторую форму «импорт», чтобы импортировать его в мое приложение Rails. Я понятия не имею, куда это должно идти в структуре каталогов, и я не знаю, где и как я должен сообщить своему приложению, как его включить.

ответ

12

Вам понадобится пара вещей.

  1. Скомпилируйте класс.

    mkdir classes 
    javac -d classes src/Dog.java 
    
  2. Добавить classes путь к классам в приложении Rails (инициализатор, например).

    require 'java' 
    $CLASSPATH << File.join(Rails.root, "classes") 
    
  3. Импортировать класс.

    java_import Java::Dog 
    

Если вы хотите, чтобы сделать военный файл вашего приложения Rails с камышевки, вы можете также добавить каталог classes в файл войны, используя config.dirs опции в config/warble.rb, а класс Dog будет доступен без необходимости добавлять к $CLASSPATH из-за соглашения Java о том, что WEB-INF/classes добавляются в путь к классам в веб-приложении Java.

+0

Отлично! Ты сделал мой день, Ник. Спасибо! –