我既想用到rails的敏捷开发,又想使用PHPRPC的跨语言、跨平台、跨环境的特性。
既然andot已经实现了PHPRPC for ruby, 那为什么我不能实现PHPRPC for rails?
前途是美好的,过程是坎坷的,最终实现了这个功能。
测试环境 ruby 1.8.6 + rails 2.3
(注:rails的稳定版是2.2,但在2.3里引入了Metal,支持了使用rack的php for ruby的调用方式)
1. 安装ruby
由于是测试,我直接安装了windows的一步安装包
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
一路next,安装完毕,在命令行输入
ruby -v
看到返回
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
说明安装成功
当然,现在ruby 已经发布了1.91稳定版,也可以安装这个版本,ruby的1.9的运行速度比1.8有了很大的提高。
2.安装rails 2.3版
很简单,在命令行里输入
gem install rails –source http://gems.rubyonrails.org
在等待一段时间之后rails就安装完毕了。
在命令行输入
rails -v
看到输出
Rails 2.3.0
说明rails安装成功
3.将PHPRPC安装为rails插件
首先,下载PHPRPC for ruby
在命令行里输入
gem install phprpc
看到
Successfully installed phprpc-3.0.4
1 gem installed
就说明PHPRPC for ruby已经安装好了,但我们在rails里还没法使用。
我们进入rails目录,在命令行输入
ruby script/generate plugin phprpc
rails会在 vendor/plugins/ 生成一个phprpc目录,里面有lib, tasks, test等几个目录和文件。
我们将gem安装目录下phprpc-3.0.4目录里的lib目录覆盖 vendor/plugins/phprpc/lib目录就可以了,或者你直接使用附件里的lib文件进行覆盖。
这样,PHPRPC就成为了rails应用的一个插件。
4.生成Metal
在命令行输入
ruby script/generate metal server
rails会在app/metal 目录生成一个server.rb文件
将server.rb替换为下面的代码
# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)
class Server
def self.add(a, b)
a + b
end
def self.sub(a, b)
a - b
end
def self.hello(s)
"hello: " << s
end
def self.call(env)
if env["PATH_INFO"] =~ /^\/server/
server = PHPRPC::BaseServer.new()
server.debug = true
server.add(["add", "sub", "hello"], self)
server.call(env)
else
[404, {"Content-Type" => "text/html"}, ["Not Found"]]
end
end
end
5 启动服务器
命令行输入
ruby script\server
便启动了webrick服务器
输入http://127.0.0.1:3000/server
便能看到熟悉的phprpc_functions="xxxxxx";了
至此PHPRPC for rails应用建立成功
题外话:
http://www.iteye.com/news/4604-rails-metal-huge-performance-improvement
我按这里的代码进行了测试,不愧如标题说的,性能的巨大改进
分享到:
- 2009-03-01 01:05
- 浏览 1358
- 评论(3)
- 论坛回复 / 浏览 (3 / 2573)
- 查看更多
相关推荐
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...