所以我正在创建一个Rails应用程序,它将作为我们组织中联系信息的目录。但它并不像听起来那么简单。
我知道这听起来很荒谬,但没有什么可以做的。我们的组织非常分散,这是获得我们想要的最直接的方式。
这是我的第二个Rails应用程序,所以我对大多数设计和管道都很满意,但我不知道定期轮询远程目录中的数据并将其导入我们的本地SQL表的最佳方法。
在我的应用中,我应该定期从LDAP将数据导入到我的表中吗?我是否使用Rails?我应该直接在Ruby中执行此操作并将其作为cron作业运行吗?
答案 0 :(得分:2)
如果您希望将同步功能作为Rails应用程序的一部分,那么您可以在单独的模型类中创建该逻辑(让我们称之为LDAPSynchroniser
)。
然后您可以从多个地方重复使用它,包括:
rake任务看起来像:
task :cron => :ldapsync do
puts "Sync-ing with LDAP..."
status = LDAPSynchroniser.new.run
puts "done: #{status.to_s}"
end
Web应用程序触发器将是常规控制器:
def LDAPSyncController < ...
# probably authentication is needed...
def sync
status = LDAPSynchroniser.new.run # or run it in a separate thread-ish
# respond with status
end
end
现在回答你的问题:
我的应用程序应该定期从LDAP中将数据导入到我的表中吗?
使用rake task + cron。
我使用Rails吗?
您可能需要启动rails,但您不需要为此运行rails Web服务器。 虽然您可能希望从Web应用程序本身触发任务。
我应该直接在Ruby中执行此操作并将其作为cron作业运行吗?
在Rails中执行此操作会更容易,因为您已经拥有了所需的模型。 使用Plain Ruby也可能,但我不认为这是值得的。