JRuby on Rails: использование пользовательских классов Java в приложении Rails - PullRequest
6 голосов
/ 12 октября 2010

Я только начал с JRuby on Rails и мне это очень нравится.Я знаю, как использовать текущие классы в Java API в моем приложении 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, а затем вызвать некоторую форму «import», чтобы импортировать его в мое приложение Rails.Я понятия не имею, куда это должно идти в структуре каталогов, и при этом я не знаю, где и как я должен сказать своему приложению, как его включить.

1 Ответ

12 голосов
/ 12 октября 2010

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

  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
    

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

...