【发布时间】:2011-03-04 07:48:00
【问题描述】:
我正在尝试在 Rails 3 应用程序中使用 win32ole gem,但遇到了一些我认为与线程相关的问题。基本上,我有这样的代码,用于从我们的 Active Directory 存储中获取用户特定的数据:
root = WIN32OLE.connect("LDAP://RootDSE")
但这在作为 Rails 请求的一部分运行时会出现零星错误(我认为 Rails 应用程序重新启动后的第一个请求总是有效的)。当我从独立的 Ruby 应用程序运行此代码时,它每次都能正常工作。我从一些谷歌搜索中了解到,这是因为 OLE/COM 对象只能在它最初初始化的线程中使用(与它在 STA 中运行有关吗?)。从那我猜这与 Rails 3 在不同的线程上运行不同的请求有关吗? (我的 Rails 应用程序在 Windows 机器上运行。)
WIN32OLE.connect 调用引发的错误是'connect': failed to parse display name of moniker。
有什么办法可以解决这个问题吗?
【问题讨论】: