2010-07-06 14 views
16

Estoy intentando agregar una carpeta completa al JRuby 1.5 classpath para mi aplicación Rails. El JRuby Wiki sugiere lo siguiente: "... añadir el directorio de configuración de la ruta de clase JRuby en config/environment.rb:"JRuby on Rails: Agregar una carpeta al classpath

$CLASSPATH << "file:///#{File.expand_path(File.join(RAILS_ROOT, 'config'))}/" 

que no parece funcionar para mí. No importa si coloco eso antes, después o dentro del bloque Rails::Initializer.run. No importa qué, me sale:

/home/sean/src/sbruby/seo/config/environment.rb:45:NoMethodError: undefined method `<<' for nil:NilClass 
/home/sean/apps/jruby/jruby-1.5.0/lib/ruby/gems/1.8/gems/rails-2.3.7/lib/rails/backtrace_cleaner.rb:2:NameError: uninitialized constant ActiveSupport::BacktraceCleaner 
/home/sean/apps/jruby/jruby-1.5.0/lib/ruby/gems/1.8/gems/rails-2.3.7/lib/console_with_helpers.rb:5:NameError: uninitialized constant ApplicationController 

Por ejemplo, yo estoy tratando de agregar una carpeta bajo RAILS_ROOT llamada resources/foobar, por lo que añade lo siguiente a environment.rb:

$CLASSPATH << "file:///#{File.expand_path(File.join(RAILS_ROOT, "resources", "foobar"))}/" 

mismo error.

¿Cuál es la forma correcta de agregar una carpeta a la ruta de clases JRuby con Rails?

Respuesta

26

Requerir java primero. Eso es lo que hace que la variable $ CLASSPATH en vivo.

include Java 
$CLASSPATH << "your/folder" 

en pre-1.0 versiones de JRuby, que harías require 'java' lugar, pero en JRuby moderna que en silencio no funciona.

+0

Impresionante. ¡Eso era lo que me estaba perdiendo! – organicveggie

+0

Actualicé la wiki de JRuby para reflejar ese requisito. Gracias de nuevo. – organicveggie

+2

aunque es "incluir Java" en lugar de "requerir" java "en estos días (https://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby). – ottobar

Cuestiones relacionadas