我正在尝试在 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
.
有什么想法可以解决这个问题吗?