解决jruby-ldap
跟Active Directory兼容问题的patch。
# config/initializers/jruby-ldap_patch.rb
require 'ldap'
module JrubyLdapPatches
module AddToHashToEntry
def to_hash
self
end
end
module AlwaysUseLdapCtxFactory
def self.included(base)
base.extend ClassMethods
base.class_eval do
class << self
alias_method_chain :configuration, :fixed_factory
end
end
end
module ClassMethods
def configuration_with_fixed_factory(attrs = {})
configuration_without_fixed_factory(attrs).update(javax.naming.Context::INITIAL_CONTEXT_FACTORY => 'com.sun.jndi.ldap.LdapCtxFactory')
end
end
end
module MoreInformationForWrappedErrors
def self.included(base)
base.extend ClassMethods
base.class_eval do
class << self
alias_method_chain :wrap, :more_information
end
end
end
module ClassMethods
def wrap_with_more_information(message, java_exception)
returning wrap_without_more_information(message, java_exception) do
show_cause(java_exception.cause) if $DEBUG || $VERBOSE_LDAP_ERRORS
end
end
def show_cause(exception)
unless exception.nil?
puts exception.to_s
show_cause(exception.cause)
end
end
end
end
end
LDAP::Entry.send :include, JrubyLdapPatches::AddToHashToEntry
LDAP.send :include, JrubyLdapPatches::AlwaysUseLdapCtxFactory
LDAP::Error.send :include, JrubyLdapPatches::MoreInformationForWrappedErrors
module LDAP
class SSLConn
# LDAP::SSLConn in jruby-ldap doesn't have the same arglist as ruby-ldap
# does, and activedirectory tries to create one with three arguments.
def initialize(host, port, *dontcare)
super(host, port)
@use_ssl = true
end
end
end
从这个patch也可以一窥ruby patch的设计:alias_method_chain和mixin。
分享到:
相关推荐
**JRuby 1.7.8 版本详解** JRuby 是一个开源的、高性能的 Ruby 解释器,它能够将 Ruby 代码编译成 Java 字节码,从而在 Java 虚拟机(JVM)上运行。JRuby 的出现使得 Ruby 开发者能够利用 JVM 的强大功能和丰富的库...
标题“jruby-src-1.0”指的是JRuby的一个特定版本——1.0的源代码。JRuby是一种实现Ruby编程语言的Java版本,它允许在Java平台上运行Ruby代码,同时也支持与Java应用程序进行无缝集成。这个压缩包“jruby-src-1.0....
标题 "org.jruby.rar" 暗示我们正在讨论一个与 JRuby 相关的压缩文件,其中可能包含了 JRuby 的源代码、库文件或者其他相关资源。JRuby 是一种 Java 实现的 Ruby 解释器,它允许 Ruby 代码在 JVM(Java 虚拟机)上...
**JRuby 安装与配置指南** JRuby 是一个基于 Java 平台的 Ruby 实现,它允许开发者利用 Ruby 语言的优势同时享受 Java 生态系统的强大功能。在本文中,我们将详细探讨如何安装和配置 JRuby,特别是针对 JRuby 1.1.2...
JRuby是Java平台上的一个实现,它允许开发者在Java虚拟机(JVM)上运行Ruby编程语言。这个“jruby-bin-1.3.1.zip”压缩包是JRuby的一个早期版本,专为Ruby语言的研发提供必要的工具和环境。在这个版本中,重点是兼容...
jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让...
**JRuby:Ruby on Windows的完美融合** JRuby是一个开源的、基于Java平台的Ruby语言实现,它允许开发者在Ruby环境中使用Java类库,并且可以让Java应用程序无缝地调用Ruby代码。标题中的“jruby_windows_1_6_4安装...
《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...
在IT行业中,尤其是在Java与Ruby混合开发的场景中,JRuby是一个重要的工具,它允许开发者在Java平台上运行Ruby代码。由于JRuby是基于JVM(Java Virtual Machine)的,因此可以利用Java生态中的各种工具来对其进行...
JRuby的版本"jruby-jruby-7bee00d"可能是一个特定的Git提交版本,这表明它是一个开发版本,可能包含了最新的功能和改进。通常,这样的版本会包含一些实验性的特性,对于开发者来说,他们可以提前试用新功能并提供...
jruby-complete-1.7.19.jar,java版本的ruby解析器
jruby-1.3.1.jar包 解决org.jruby.exceptions.JumpException 等报错
标题 "jruby-1.5.5+OperaWatir+RSpec" 暗示了这是一个关于使用 JRuby 1.5.5 版本、OperaWatir 和 RSpec 进行自动化测试的项目或者资源集合。现在,我们将深入探讨这三个关键组件以及它们在 IT 领域中的应用。 JRuby...
**JRuby+Swing:开发桌面应用的利器** JRuby 是一种在 Java 平台上实现的 Ruby 解释器,它允许开发人员通过 Java 虚拟机(JVM)执行 Ruby 代码。JRuby 的独特之处在于其能够无缝地集成 Java 库,包括 Java Swing,...
标题 "jruby-core-1.7.12.zip" 提供的是 JRuby 的核心库版本 1.7.12,这是一个将 Java 虚拟机(JVM)与 Ruby 语言结合的开源实现。JRuby 允许开发者在 Java 平台上运行 Ruby 代码,同时利用 Java 生态系统的强大功能...
**标题解析:**"jruby-bin-0.9.0.tar.gz" 是一个压缩文件,其中包含JRUBY的可执行二进制版本,版本号为0.9.0。JRUBY是Ruby编程语言的一个实现,它允许在Java平台上运行Ruby代码。 **描述解读:**描述中提到“Ruby...
标题“用JRuby读取Excel文件”涉及到的主要技术点是JRuby和处理Excel文件,这里我们将深入探讨这两个关键概念。 JRuby是Java平台上的一个Ruby实现,它允许开发者使用Ruby语言编写程序,同时利用Java的类库和运行...
**JRuby实战入门** 在IT领域,Ruby是一种高级、动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力受到开发者们的喜爱。Rails是Ruby的一个开源Web应用框架,它遵循MVC(模型-视图-控制器)架构模式...