我正在计划一个系统,需要在许多本地Rails应用程序之间进行协作。该设计要求全球应用程序在这些服务器之间传递RESTful请求。Rails中的分布式资源
例如,假设每个学校都有一个本地的Rails应用程序,包括一个教师资源。我提出了一个全球性的应用程序,提供教师的访问权限:/ school/42/teacher/3
全球服务器上的学校资源有一个用于每个学校的应用程序的基本URL的字段,请求school_42_url/teacher/3。
该设计要求中继,而不是让学校服务器直接相互连接。
我可以想出几种方法来实现这一点,但是,对于Rails来说,新手并不能确定哪一种方法是“Rails方式”。
ActiveResource很吸引人,但似乎需要一个固定的“站点”而不是为每个请求设置它。
路由,也许与URL globbing可能工作,但我需要看到一个如何实现这个例子。
第三种方法是自定义控制器,但这不像Rails的方式。
需要明确的是,{学校ID,teacher_id}的组合是全球唯一的,但全球服务器不需要存储教师的细节,那些被视为网络资源。
意见或建议欢迎。
这感觉就像探索的正确方向。本地服务器上的RESTful API是给定的。我会研究Net :: HTTP。 全球/学校/ 42 /老师/ 3应该在什么水平上进行分析?需要进行AR查找才能获得Schools.find(42).url,然后将该呼叫转接到该URL处的/ teacher/3。我会尝试一个控制器来处理学校的无路由呼叫。如果设置类似 的路线匹配'school /:school_id/* resource'=>'SchoolDelegate#delegate' 然后实现#delegate以使用Net :: HTTP,我是否在正确的轨道上? – Zaq 2012-02-08 05:08:03
您应该查看The Rails 3 Way的[REST chapter](http://my.safaribooksonline.com/book/web-development/ruby/9780132480345/rest-resources-and-rails/ch03#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTk3ODAxMzI0ODAzNDUvNTU=) – rudolph9 2012-02-08 06:24:41
我已经取得了一些进展...我上面提到的路线正在工作,我正在实施一个委托方法,它已经构建了正确的URI来传递给(通过id查找学校以获取正确的基础),现在可以使用网:: HTTP。下一步是编写将方法和主体复制到HTTP调用的代码。这感觉应该更容易。我应该在我的委托上创建获取,放置,发布,删除方法并路由到这些方法,而不是试图在单一方法中完成所有操作? – Zaq 2012-02-08 06:43:30