'ruby on rails'에 해당되는 글 8건

  1. 2008.09.09 [Rails] Rails 2.0에 Action Web Service를 사용해 보자.
반응형
Rails 2 버전에서는 SOAP Api를 위한 Action web service가 core에서 삭제되었다. gem install actionwebservice를 하게 되면

ERROR:  Error installing actionwebservice:
        actionwebservice requires actionpack (= 1.13.6, runtime)

에러가 나타나게 되어 설치가 불가능 하다.

## action web service를 rails 2에서 사용하기 위해서는 다음의 절차를 따른다.

1. actionwebservice의 소스로부터 설치.

 위치는 http://svn.rubyonrails.org/rails/ousted/actionwebservice/ 이며 svn 명령어를 통해서 가져 올수 있다. (svn co http://svn.rubyonrails.org/rails/ousted/actionwebservice/ )

2. setup.rb 를 실행
 소스를 가져온 폴더에서 ruby setup.rb 를 실행한다 (root권한 필요)

3. rails의 initializer 수정
 rails의 library 폴더로 가서 initializer.rb 에 다음을 추가한다.
(설치 폴더는 /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/ 이지만 설치 환겨에 따라 다를수 있다.)
 class Configuration
    .......
    .......
    attr_accessor :action_web_service
    .......
    .......
 end

4. rails application config 수정
 rails application 폴더의 config에 environment.rb 에 다음의 내용을 추가한다.

  config.frameworks += [ :action_web_service ]
  config.action_web_service =Rails::OrderedOptions.new
  config.load_paths += %W( #{RAILS_ROOT}/app/apis)

## 테스트 샘플
파라미터 2개를 받아서 덧샘하고 리턴하는 SOAP API를 만들어 보자.
1. controller 생성
 app/controller 밑에 useful_sum_controller.rb 를 생성하고 다음과 같이 입력한다.
class UsefulSumController < ApplicationController
    web_service_dispatching_mode :direct
    wsdl_service_name 'useful_sum'
    wsdl_namespace 'MyWebService'
    web_service_scaffold :invoke
    def useful_sum(parameter1, parameter2)
        return parameter1 + parameter2
    end
end


2. SOAP API 정의
 app/apis 밑에 useful_sum_api.rb 를 생성하고 다음과 같이 입력한다. 여기에서는 입력/출력 파라미터를 설정한다.
class UsefulSumApi < ActionWebService::API::Base
    api_method :useful_sum, :expects => [:int, :int], :returns => [:int]
end

3. Rails 기동
 http://localhost:3000/useful_sum/wsdl 을 입력하면 웹 브라우저에 wsdl이 출력된다.

4. 호출 Script
 testSoap.rb 를 생성하고 다음을 입력한다.


require 'soap/wsdlDriver'
require 'cgi'
WSDL_URL="http://localhost:3000/useful_sum/wsdl"
soap=SOAP::WSDLDriverFactory.new(WSDL_URL).createDriver
result=soap.UsefulSum(1,1)
puts result

ruby testSoap.rb 를 하게 되면 2가 리턴됨을 확인할 수 있다.

-------------------------------
http://www.texperts.com/2007/12/21/using-action-web-service-with-rails-20/ 의 내용 참고
반응형
Posted by alias
,