actionwebservice使用时遇到的几个问题
最近接了一个项目,要用到web service,所以现学现用了,不过在学习的过程中遇到了几个问题,而且也是很多网友遇到的问题,却没有在网上找到解答(也许是我的检索太差了),所以写blog总结一下。
本人和很多网友都是看的这篇文章http://www.ibm.com/developerworks/cn/opensource/os-ws-rubyrails/index.html,所以具体实现细节参见此文章,本文只写遇到的问题及解决方法。
问题一:安装actionwebservice
上文的安装命令“gem install actionwebservice”是为rails1.2.6提供的,如果在rails更高版本(本人测试的是2.1.1和2.3.4)上安装此gem后在运行过程中会报错,所以针对不同的rails版本要安装不同的actionwebservice,可以到rubyforge.com和rubygems.org上搜索rails各版本的actionwebservice,比如rails2.1.1可以安装dougbarth-actionwebservice,2.3.4可以安装ywen-actionwebservice,这样,actionwebservice的安装就OK了。
问题二:异常uninitialized constant HelloMessageController::HelloMessageApi
异常原因:rails在启动时默认会加载app下的controllers,helpers,models和views四个目录,但是hello_message_api.rb是存放在app/apis/目录下,默认启动时是不会加载此目录的,因此在请求http://localhost:3000/hello_message/wsdl时就会找不到HelloMessageApi了,抛异常也是应该的了。
解决方法:在config/environment.rb文件中加入如下代码,以通知rails在启动时加载app/apis目录下的内容。
config.load_paths += %W( #{RAILS_ROOT}/app/apis )config.gem "ywen-actionwebservice", :lib => "action_web_service", :version => "2.3.4.1"