`
arrongao
  • 浏览: 27414 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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.comrubygems.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 )

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

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

异常原因:没有找到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而确定。

问题四:与 include Reloadable::Deprecated 有关的错误

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

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


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

分享到:
评论

相关推荐

    使用JRuby开发Web Service全攻略

    本文介绍了如何用JRuby开发Web Service。用JRuby开发Web Service,需要安装ActionWebService。安装完毕之后便可以开始调用及部署了。

    rails本地安装包

    在本地环境中安装Rails后,你可以创建一个新的Rails项目,使用命令: ``` rails new myapp ``` 这将在当前目录下生成一个名为`myapp`的新Rails项目结构。 最后,通过运行`rails server`启动开发服务器,然后在...

    ROR安装必备所有架包

    `actionwebservice`是Rails早期版本中用于创建Web服务的组件,允许Rails应用程序提供SOAP接口。然而,自Rails 3之后,这个组件已被弃用,取而代之的是更现代的RESTful API设计。 除了`.gem`文件,压缩包中还有`.tar...

    rails-1.2.3

    rails-1.2.3所需要的gem文件包括: * activesupport-1.4.2.gem * activerecord-1.15.3.gem * actionpack-1.13.3.gem * actionmailer-1.3.3.gem * actionwebservice-1.2.3.gem * rails-1.2.3.gem

Global site tag (gtag.js) - Google Analytics