PHPRPC for rails

xiaoxiao2022-10-03  166

我既想用到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.41 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我按这里的代码进行了测试,不愧如标题说的,性能的巨大改进

 

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-4977984.html

最新回复(0)