最近接了一个项目,要用到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 )
注意,这段代码是要添加在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,需要安装ActionWebService。安装完毕之后便可以开始调用及部署了。
在本地环境中安装Rails后,你可以创建一个新的Rails项目,使用命令: ``` rails new myapp ``` 这将在当前目录下生成一个名为`myapp`的新Rails项目结构。 最后,通过运行`rails server`启动开发服务器,然后在...
`actionwebservice`是Rails早期版本中用于创建Web服务的组件,允许Rails应用程序提供SOAP接口。然而,自Rails 3之后,这个组件已被弃用,取而代之的是更现代的RESTful API设计。 除了`.gem`文件,压缩包中还有`.tar...
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