actionwebservice使用时遇到的几个问题

最近接了一个项目,要用到web service,所以现学现用了,不过在学习的过程中遇到了几个问题,而且也是很多网友遇到的问题,却没有在网上找到解答(也许是我的检索太差了),所以写blog总结一下。

本人和很多网友都是看的这篇文章[url]http://www.ibm.com/developerworks/cn/opensource/os-ws-rubyrails/index.html[/url],所以具体实现细节参见此文章,本文只写遇到的问题及解决方法。

[b]问题一:安装actionwebservice[/b]

上文的安装命令“gem install actionwebservice”是为rails1.2.6提供的,如果在rails更高版本(本人测试的是2.1.1和2.3.4)上安装此gem后在运行过程中会报错,所以针对不同的rails版本要安装不同的actionwebservice,可以到[url]rubyforge.com[/url]和[url]rubygems.org[/url]上搜索rails各版本的actionwebservice,比如rails2.1.1可以安装dougbarth-actionwebservice,2.3.4可以安装ywen-actionwebservice,这样,actionwebservice的安装就OK了。

[b]问题二:异常uninitialized constant HelloMessageController::HelloMessageApi[/b]

异常原因: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 )

注意,这段代码是要添加在Rails::Initializer.run代码块的。再次启动server此问题就解决了,不过可能还会遇到问题

[b]问题三:异常uninitialized constant ActionWebService或api_method方法没有定义[/b]

异常原因:没有找到actionwebservice的gem
解决方法:在config/environment.rb文件的Rails::Initializer.run代码块中添加如下代码

config.gem "ywen-actionwebservice", :lib => "action_web_service", :version => "2.3.4.1"

注:ywen-actionwebservice是gem的名称,version是gem的版本号,这两个值都是根据所安装gem而确定。

[b]问题四:与 include Reloadable::Deprecated 有关的错误[/b]

可能会报与include Reloadable::Deprecated有关的错误,基本意思是Reloadable类没有定义。

异常原因:rails是2.0以上的版本,而actionwebservice安装的版本是1.2.6,所以会报此错误。
解决方法:按照问题一处理就OK了。


以上就是在接触actionwebservice时遇到的问题,现在看来问题很简单,可当时却用了很多时间才解决,回想一下发现自己的问题所在:对rails只知道使用,还不知道内部结构,或者说是知道其简单内部结构,但是在处理问题时想的不够深入,不会去向那个方向想,所以浪费了很多时间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值