2010-10-12 13 views
6

Acabo de comenzar con JRuby on Rails y me encanta. Sé cómo usar las clases actuales dentro de la API de Java en mi aplicación Rails, pero si quisiera crear una nueva clase personalizada escrita en código puramente Java, ¿cómo podría usarla en mi aplicación Rails?JRuby on Rails: el uso de clases personalizadas de Java en su aplicación Rails

Por ejemplo, digamos que he creado Dog.java:

class Dog { 
    private String name; 

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

    public String getName() { 
    return name; 
    } 
} 

¿cómo iba a ser capaz de crear un nuevo objeto de perro (Dog.new) en mi aplicación Rails? Necesito poner el archivo Dog.java o Dog.class en algún lugar, y luego llamar a algún tipo de "importación" para importarlo a mi aplicación Rails. No tengo idea de dónde debería ir esto en la estructura del directorio ni sé dónde y cómo debería decirle a mi aplicación cómo incluirlo.

Respuesta

12

Necesitará un par de cosas.

  1. Compila la clase.

    mkdir classes 
    javac -d classes src/Dog.java 
    
  2. Añadir classes a la ruta de clase en su aplicación Rails (un inicializador por ejemplo).

    require 'java' 
    $CLASSPATH << File.join(Rails.root, "classes") 
    
  3. Importe la clase.

    java_import Java::Dog 
    

Si desea hacer un archivo de la guerra de su aplicación Rails con la curruca, así como insertar el directorio classes en el fichero de la guerra mediante la opción config.dirs en config/warble.rb, y la clase de perro estarán disponibles sin tener que agregar a $CLASSPATH debido a la convención de Java de que WEB-INF/classes se agreguen al classpath en una aplicación web Java.

+0

¡Excelente! Has hecho mi día, Nick. ¡Gracias! –

Cuestiones relacionadas