前提・実現したいこと
Rails6で、rails runnerで動かすrubyファイルを、SOAPクライアントとして実行させたいのですが、
その際、wsdlファイルをローカルのRailsプロジェクトで用意したものを使いたいのですが、どのように指定すればよいのでしょうか。
ご教示お願い致します。
試したこと
下記のRubyファイルをSOAPクライアントとして、rails runnerとして動かします。
Railsプロジェクト/sample/test.rb
SOAPに関しては、こちらのサイトを参考にしました。
例えば、下記のようにローカルにwsdlファイルを置くとして、
Railsプロジェクト/sample/sample.wsdl
このwsdlファイルを指定するには、どのように記述すればよいですか。
参考にしたサイトでは、URLで指定していたため、ローカルでの指定方法のご教示お願いいたします。
client = Savon.client(wsdl: 'http://service.example.com?wsdl')
補足情報(FW/ツールのバージョンなど)
Ruby on Rails 6
追記
SOAPクライアントのrubyファイル[Railsプロジェクト/sample/test.rb]を下記のように組んでみました。
require "savon" class Test def execute client = Savon.client(wsdl: "http://localhost:3000/test_soap?sample.wsdl") client.operations # 使えるオペレーションの一覧がでる response = client.call(:find_user, message: { id: 42 }) # find_userというオペレーションでid 42をとってこいみたいな。 response.body # HTTPレスポンスのボディ、hashで値が入っています。 puts response end end test = Test.new test.execute
すると、下記のエラーが出てしまうのですが、どういった対処をすればよいですか。
$ rails runner sample/test.rb Traceback (most recent call last): 22: from bin/rails:9:in `<main>' 21: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require' (省略) 2: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency' 1: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': cannot load such file -- savon (LoadError)
確かめてみると、gemのsavonが入っているような挙動はします。
$ gem list savon *** LOCAL GEMS *** savon (2.12.1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。