锁定老帖子 主题:[Ruby DSL] 三言两语
精华帖 (0) :: 良好帖 (3) :: 新手帖 (1) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-12
最后修改:2009-10-12
port 2001 respond :resource=>"/hello" do |request, response| response.body = "hello" end 当然,你可以一口气开两个 port 2001 respond :resource=>"/hello"{........} port 2002 respond :resource=>"/hello"{........} 如何实现?参见:http://jroller.com/rolsen/entry/building_a_dsl_in_ruby1 2. 你也可以这么来加数据 add_user { name “Charles” password “hello123” privileges normal } 如何实现? def add_user (&block) u = User.new # User class has name, password, privileges methods u.instance_eval(&block) if block_given? end 3.Rake 或许这个是你最熟悉的 namespace :db task "..." do end end 4.还有这个 Rails Routes 引用 ActionController::Routing::Routes.draw do |map| map.connect '',:controller => "home",:action => 'index' end 如何实现? 参见 actionpack-2.3.3\lib\action_controller\routing\*.rb 第一步:Routes只是ActionController::Routing的一个变量,后者是个module module ActionController module Routing Routes = RouteSet.new end end RouteSet的draw方法只是把Mapping放进去作参数: class RouteSet class Mapper .... def connect(path, options = {}) @set.add_route(path, options) end end def draw yield Mapper.new(self) .... end end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-12
dsl发展下去会变成天网吗?
|
|
返回顶楼 | |
发表时间:2009-10-12
最后修改:2009-10-12
class Program { static void Main(string[] args) { /*if (args.Length == 0) { Console.WriteLine( "Usage: simplehost filename [querystring]"); return; } string file = args[0]; string query = (args.Length > 1) ? args[1] : "";*/ MySimpleHost msh = (MySimpleHost) ApplicationHost.CreateApplicationHost( typeof(MySimpleHost), "/", Directory.GetCurrentDirectory()); msh.ProcessRequest(file, query); } } public class MySimpleHost : MarshalByRefObject { public void ProcessRequest(string file, string query) { SimpleWorkerRequest swr = new SimpleWorkerRequest(file, query, Console.Out); HttpRuntime.ProcessRequest(swr); } } DSL不DSL无所谓,第一个那个也叫web server,这段C#可比它强多了 |
|
返回顶楼 | |
发表时间:2009-10-12
楼上真会扯淡,哪里强了?是代码更好看还是跨平台更容易? |
|
返回顶楼 | |
发表时间:2009-10-12
static void Main(string[] args) 这么恶心的东西就不要拿出来丢人现眼了
|
|
返回顶楼 | |
发表时间:2009-10-12
最后修改:2009-10-12
下一站,火星 写道 楼上真会扯淡,哪里强了?是代码更好看还是跨平台更容易? 愚昧,你支持个web service给我看看啊,这不是比你强的地方 |
|
返回顶楼 | |
发表时间:2009-10-12
ray_linn 写道 下一站,火星 写道 楼上真会扯淡,哪里强了?是代码更好看还是跨平台更容易? 愚昧,你支持个web service给我看看啊,这不是比你强的地方 你还活在web service的年代啊?知道restful不?http+xml就能搞定web service的需求,看看阿里平台的api吧 |
|
返回顶楼 | |
发表时间:2009-10-12
大姨妈,不知道sinatra不是你的错,出来丢人现眼就大错特错了
|
|
返回顶楼 | |
发表时间:2009-10-12
花花公子 写道 大姨妈,不知道sinatra不是你的错,出来丢人现眼就大错特错了
不是号称要用ruby写么,怎么又call起module了? |
|
返回顶楼 | |
发表时间:2009-10-12
ray_linn 写道 花花公子 写道 大姨妈,不知道sinatra不是你的错,出来丢人现眼就大错特错了
不是号称要用ruby写么,怎么又call起module了? 我靠,有module不能用,那标准库怎么算啊? |
|
返回顶楼 | |