JRuby on Rails: Utilizzo di classi Java personalizzati nel applicazione Rails
-
29-09-2019 - |
Domanda
Ho appena iniziato con JRuby on Rails e assolutamente lo amo. So come utilizzare le classi attuali all'interno della API Java nella mia applicazione Rails, ma se volevo creare una nuova classe personalizzata scritta in puro codice Java, come vorrei essere in grado di usarlo nella mia applicazione Rails?
Per esempio, diciamo che ho creato Dog.java:
class Dog {
private String name;
public Dog() {
name = "Fido";
}
public String getName() {
return name;
}
}
Come sarei stato in grado di creare un nuovo oggetto Dog (Dog.new) nel mio Rails app? Ho bisogno di mettere il file da qualche parte o Dog.java Dog.class, e quindi chiamare qualche forma di "import" per importare nel mio Rails app. Non ho idea di dove questo dovrebbe andare nella struttura di directory né so dove e come devo dire la mia app come includere esso.
Soluzione
Avrete bisogno di un paio di cose.
-
compilare la classe.
mkdir classes javac -d classes src/Dog.java
-
Aggiungi
classes
al classpath nella vostra applicazione Rails (un inizializzatore per esempio).require 'java' $CLASSPATH << File.join(Rails.root, "classes")
-
Importa la classe.
java_import Java::Dog
Se si vuole fare un file WAR del vostro Rails app con verdognola, si potrebbe anche aggiungere la directory classes
al file di guerra utilizzando l'opzione config.dirs
in config/warble.rb
, e la classe cane sarà a disposizione senza dover aggiungere a $CLASSPATH
perché della convenzione Java che wEB-INF / classes essere aggiunte al classpath in un'applicazione web Java.