JRuby on Rails: использование пользовательских классов Java в приложении Rails

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

например, предположим, я создал собаку.java:

class Dog {
  private String name;

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

  public String getName() {
    return name;
  }
}

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

1 ответов


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

  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/warble.rb, и класс Dog будет доступен без необходимости добавлять в $CLASSPATH из-за соглашения Java, что WEB-INF/classes будут добавлены к пути к классам в веб-приложении Java.