JRuby on Rails:在类路径中添加一个文件夹

org*_*gie 16 ruby-on-rails jruby classpath jrubyonrails

我正在尝试将整个文件夹添加到我的Rails应用程序的JRuby 1.5类路径中.在JRuby的维基提出以下建议:"......添加config目录到JRuby的类路径config/environment.rb:"

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

这对我来说似乎不起作用.无论我是在Rails::Initializer.run块之前,之后还是之内放置它都没关系.无论如何,我得到:

/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
Run Code Online (Sandbox Code Playgroud)

例如,我正在尝试在RAILS_ROOT被调用下添加一个文件夹resources/foobar,因此我将以下内容添加到environment.rb:

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

同样的错误.

使用Rails将文件夹添加到JRuby类路径的正确方法是什么?

Nic*_*ger 26

首先要求java.这就是使$ CLASSPATH变量生效的原因.

include Java
$CLASSPATH << "your/folder"
Run Code Online (Sandbox Code Playgroud)

在JRuby的1.0之前的版本中,你会做require 'java',但在现代的JRuby中,它默默地不起作用.

  • 虽然现在是"包括Java"而不是"需要'java'"(https://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby). (2认同)