rubyamf里的services目录用了放置用户自定义rb文件的。services目录下的rubyamf/helpers/active_record_connector.rb文件是用来调用active record的。如果用户需要连接数据库,那么他可以在自定义类里定义如下代码:
require RUBYAMF_SERVICES
+
'
rubyamf/helpers/active_record_connector'
class MyService
include ActiveRecordConnector
def before_filter
ar_connect(RUBYAMF_SERVICES + ' some/paackage/my.yaml','myconnectionnode')
end
def say_something(something)
something.to_s
end
def get_product
product = Product.find(:all)
end
end
class Product < ActiveRecord::Base
end
class MyService
include ActiveRecordConnector
def before_filter
ar_connect(RUBYAMF_SERVICES + ' some/paackage/my.yaml','myconnectionnode')
end
def say_something(something)
something.to_s
end
def get_product
product = Product.find(:all)
end
end
class Product < ActiveRecord::Base
end
1.必须存在services/some/package/my.yaml的数据库配置文件
2.相应的数据库中必须存在products表
3.从上面的代码可以看出services目录下的MyService类,其实是继承了ActionController类,体现了ruby动态语言的灵活性。
然后在rubyamf目录下运行dos命令:ruby server/start (ruby server/start -h可以查看start参数列表)
在flex客户端可以用如下代码来调用say_something和get_product
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
关于flex的具体代码,可以参考amfnet里的内容。
在mongrel_servlet.rb里可以看出h.register("/gateway.rb", RUBYAMF::MongrelServlet.new),mongrel只需注册一个servlet就可以拦截请求。