我有以下使用 java 类的 jruby 代码javax.naming.InitialContext
:
if RUBY_PLATFORM == "java"
require 'java'
import javax.naming.InitialContext
module JndiProperties
def self.getProperty(name)
begin
env.lookup(name).to_s
rescue
nil
end
end
def self.[](name)
getProperty(name)
end
private
def self.env
context = InitialContext.new
environment = context.lookup 'java:comp/env'
environment
end
end
else
module JndiProperties
def self.getProperty(name)
nil
end
def self.[](name)
getProperty(name)
end
end
end
我在 database.yml 中使用这个模块来配置数据库连接。例如:
username: <%= JndiProperties['ANTARCTICLE_DB_USER'] || 'root' %>
当我尝试运行 rails 应用程序时,我得到uninitialized constant JndiProperties::InitialContext
. 如果我尝试使用 irb 的这个模块,它将按预期工作。