반응형
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/ 의 내용 참고
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/ 의 내용 참고
반응형