`
andyhu1007
  • 浏览: 199285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JRuby LDAP Patch

阅读更多

解决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。

0
0
分享到:
评论

相关推荐

    jruby1.7.8版本呢

    **JRuby 1.7.8 版本详解** JRuby 是一个开源的、高性能的 Ruby 解释器,它能够将 Ruby 代码编译成 Java 字节码,从而在 Java 虚拟机(JVM)上运行。JRuby 的出现使得 Ruby 开发者能够利用 JVM 的强大功能和丰富的库...

    jruby-src-1.0

    标题“jruby-src-1.0”指的是JRuby的一个特定版本——1.0的源代码。JRuby是一种实现Ruby编程语言的Java版本,它允许在Java平台上运行Ruby代码,同时也支持与Java应用程序进行无缝集成。这个压缩包“jruby-src-1.0....

    org.jruby.rar

    标题 "org.jruby.rar" 暗示我们正在讨论一个与 JRuby 相关的压缩文件,其中可能包含了 JRuby 的源代码、库文件或者其他相关资源。JRuby 是一种 Java 实现的 Ruby 解释器,它允许 Ruby 代码在 JVM(Java 虚拟机)上...

    如何安装与配置JRuby

    **JRuby 安装与配置指南** JRuby 是一个基于 Java 平台的 Ruby 实现,它允许开发者利用 Ruby 语言的优势同时享受 Java 生态系统的强大功能。在本文中,我们将详细探讨如何安装和配置 JRuby,特别是针对 JRuby 1.1.2...

    jruby-bin-1.3.1.zip

    JRuby是Java平台上的一个实现,它允许开发者在Java虚拟机(JVM)上运行Ruby编程语言。这个“jruby-bin-1.3.1.zip”压缩包是JRuby的一个早期版本,专为Ruby语言的研发提供必要的工具和环境。在这个版本中,重点是兼容...

    jruby_windows1.7and bin1.7

    jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让...

    jruby_windows_1_6_4安装文件

    **JRuby:Ruby on Windows的完美融合** JRuby是一个开源的、基于Java平台的Ruby语言实现,它允许开发者在Ruby环境中使用Java类库,并且可以让Java应用程序无缝地调用Ruby代码。标题中的“jruby_windows_1_6_4安装...

    jRuby On Rails WEB2.0

    《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...

    如何监控JRuby脚本的执行

    在IT行业中,尤其是在Java与Ruby混合开发的场景中,JRuby是一个重要的工具,它允许开发者在Java平台上运行Ruby代码。由于JRuby是基于JVM(Java Virtual Machine)的,因此可以利用Java生态中的各种工具来对其进行...

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby的版本"jruby-jruby-7bee00d"可能是一个特定的Git提交版本,这表明它是一个开发版本,可能包含了最新的功能和改进。通常,这样的版本会包含一些实验性的特性,对于开发者来说,他们可以提前试用新功能并提供...

    jruby-complete-1.7.19.jar

    jruby-complete-1.7.19.jar,java版本的ruby解析器

    jruby-1.3.1.jar

    jruby-1.3.1.jar包 解决org.jruby.exceptions.JumpException 等报错

    jruby-1.5.5+OperaWatir+RSpec

    标题 "jruby-1.5.5+OperaWatir+RSpec" 暗示了这是一个关于使用 JRuby 1.5.5 版本、OperaWatir 和 RSpec 进行自动化测试的项目或者资源集合。现在,我们将深入探讨这三个关键组件以及它们在 IT 领域中的应用。 JRuby...

    JRuby+Swing是开发人员钟情的选择

    **JRuby+Swing:开发桌面应用的利器** JRuby 是一种在 Java 平台上实现的 Ruby 解释器,它允许开发人员通过 Java 虚拟机(JVM)执行 Ruby 代码。JRuby 的独特之处在于其能够无缝地集成 Java 库,包括 Java Swing,...

    jruby-core-1.7.12.zip

    标题 "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-bin-0.9.0.tar.gz" 是一个压缩文件,其中包含JRUBY的可执行二进制版本,版本号为0.9.0。JRUBY是Ruby编程语言的一个实现,它允许在Java平台上运行Ruby代码。 **描述解读:**描述中提到“Ruby...

    用JRuby读取Excel文件

    标题“用JRuby读取Excel文件”涉及到的主要技术点是JRuby和处理Excel文件,这里我们将深入探讨这两个关键概念。 JRuby是Java平台上的一个Ruby实现,它允许开发者使用Ruby语言编写程序,同时利用Java的类库和运行...

    JRuby 实战入门

    **JRuby实战入门** 在IT领域,Ruby是一种高级、动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力受到开发者们的喜爱。Rails是Ruby的一个开源Web应用框架,它遵循MVC(模型-视图-控制器)架构模式...

Global site tag (gtag.js) - Google Analytics