SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

RailsとAIRで作成する画像のRevolver表示

RailsとAIRで作成する画像のRevolver表示(前篇)

Rails ActionWebServiceとAIRの連携による画像のRevolver表示

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (6.7 KB)

野球選手マスタの情報を検索するサービスの公開方法

 次に、野球選手マスタの情報を検索するサービスを公開します。

 Ruby on Railsでウェブサービスを公開するためには、APIクラスとコントローラクラスの2つを作成する必要があります。mst_baseball_player_service_apiクラスは、「app/apis」フォルダの配下に作成してください。

 「mst_baseball_player_service_controller.rb」の、find_allメソッドで野球選手マスタの全レコードを取得し、MstBaseballPlayerServiceApiのapi_method :find_allで、その定義をウェブサービスとして公開しています。AIR側のクラスは、このfind_allを呼び出すことで野球選手の情報を取得します。

mst_baseball_player_service_api.rb
module XmlrpcStruct
  class MstBaseballPlayer < ActionWebService::Struct
    member :id, :integer
    member :player_name, :string
    member :uniform_number, :string
    member :profile, :string
    member :record, :string
    member :comment, :string
    member :pitcher_flag, :string
    member :win_count, :string
    member :defeat_count, :string
    member :save_count, :string
    member :earned_run_average, :string
    member :games_started, :string
    member :batting_average, :string
    member :home_run, :string
    member :ribby, :string
    member :base_steal, :string
    member :main_image_path, :string
    member :detail_image_path, :string
    member :expanded_image_path, :string
  end
end

class MstBaseballPlayerServiceApi < ActionWebService::API::Base

  api_method :find_all,
    :returns => [[MstBaseballPlayer]]

  api_method :create,
    :expects=>[{:arg_mst_baseball_player 
        =>XmlrpcStruct::MstBaseballPlayer}],
    :returns=>[:string]

  api_method :update,
    :expects=>[{:arg_mst_baseball_player 
        =>XmlrpcStruct::MstBaseballPlayer}],
    :returns=>[:string]

  api_method :destroy,
    :expects=>[{:arg_mst_baseball_player 
        =>XmlrpcStruct::MstBaseballPlayer}],
    :returns=>[:string]
end
mst_baseball_player_service_controller.rb
class MstBaseballPlayerServiceController < ApplicationController
  wsdl_service_name 'MstBaseballPlayerService'
  web_service_api    'MstBaseballPlayerService'
  web_service_scaffold :invoke

  #------------------------------------------------------------------
  # 野球選手マスタの全レコードを取得します。
  #------------------------------------------------------------------
  def find_all
    MstBaseballPlayer.find(:all)
  end

  #------------------------------------------------------------------
  # 野球選手マスタのレコードを新規作成します。
  #------------------------------------------------------------------
  def create(arg_mst_baseball_player)
    mst_baseball_player = MstBaseballPlayer.new

    mst_baseball_player.player_name 
       = arg_mst_baseball_player.player_name
    mst_baseball_player.uniform_number 
       = arg_mst_baseball_player.uniform_number
    mst_baseball_player.profile = arg_mst_baseball_player.profile
    mst_baseball_player.record = arg_mst_baseball_player.record
    mst_baseball_player.comment = arg_mst_baseball_player.comment
    mst_baseball_player.pitcher_flag 
       = arg_mst_baseball_player.pitcher_flag
    mst_baseball_player.win_count = arg_mst_baseball_player.win_count
    mst_baseball_player.defeat_count 
       = arg_mst_baseball_player.defeat_count
    mst_baseball_player.save_count 
       = arg_mst_baseball_player.save_count
    mst_baseball_player.earned_run_average 
       = arg_mst_baseball_player.earned_run_average
    mst_baseball_player.games_started 
       = arg_mst_baseball_player.games_started
    mst_baseball_player.batting_average 
       = arg_mst_baseball_player.batting_average
    mst_baseball_player.home_run = arg_mst_baseball_player.home_run
    mst_baseball_player.ribby = arg_mst_baseball_player.ribby
    mst_baseball_player.base_steal 
       = arg_mst_baseball_player.base_steal

    mst_baseball_player.main_image_path 
       = arg_mst_baseball_player.main_image_path
    mst_baseball_player.detail_image_path 
       = arg_mst_baseball_player.detail_image_path
    mst_baseball_player.expanded_image_path 
       = arg_mst_baseball_player.expanded_image_path

    if mst_baseball_player.save
      return "Succeeded"
    else
      return "Failed"
    end
  end

  #------------------------------------------------------------------
  # 野球選手マスタのレコードを更新します。
  #------------------------------------------------------------------
  def update(arg_mst_baseball_player)
    mst_baseball_player 
       = MstBaseballPlayer.find(arg_mst_baseball_player.id)
    unless mst_baseball_player
      return "Not Found."
    end

    mst_baseball_player.player_name 
       = arg_mst_baseball_player.player_name
    mst_baseball_player.uniform_number 
       = arg_mst_baseball_player.uniform_number
    mst_baseball_player.profile = arg_mst_baseball_player.profile
    mst_baseball_player.record = arg_mst_baseball_player.record
    mst_baseball_player.comment = arg_mst_baseball_player.comment
    mst_baseball_player.pitcher_flag 
       = arg_mst_baseball_player.pitcher_flag
    mst_baseball_player.win_count = arg_mst_baseball_player.win_count
    mst_baseball_player.defeat_count 
       = arg_mst_baseball_player.defeat_count
    mst_baseball_player.save_count 
       = arg_mst_baseball_player.save_count
    mst_baseball_player.earned_run_average 
       = arg_mst_baseball_player.earned_run_average
    mst_baseball_player.games_started 
       = arg_mst_baseball_player.games_started
    mst_baseball_player.batting_average 
       = arg_mst_baseball_player.batting_average
    mst_baseball_player.home_run = arg_mst_baseball_player.home_run
    mst_baseball_player.ribby = arg_mst_baseball_player.ribby
    mst_baseball_player.base_steal 
       = arg_mst_baseball_player.base_steal
    mst_baseball_player.main_image_path 
       = arg_mst_baseball_player.main_image_path
    mst_baseball_player.detail_image_path 
       = arg_mst_baseball_player.detail_image_path
    mst_baseball_player.expanded_image_path 
       = arg_mst_baseball_player.expanded_image_path

    if mst_baseball_player.update
      return "Succeeded"
    else
      return "Failed"
    end
  end

  #------------------------------------------------------------------
  # 野球選手マスタのレコードを削除します。
  #------------------------------------------------------------------
  def destroy(arg_mst_baseball_player)
    mst_baseball_player 
       = MstBaseballPlayer.find(arg_mst_baseball_player.id)
    if mst_baseball_player.destroy
      return "Succeeded"
    else
      return "Failed"
    end
  end
end

 「http://localhost:3000/mst_baseball_player_service/invoke」から作成したウェブサービスをテストできます。

後篇では

 以上で、Ruby on Railsを使ったマスタメンテナンスアプリケーションは完成です。後篇では、このデータを表示させるクライアントツールをAIRで作成していきます。

参考資料

「FlexではじめるRIA開発」特集、絶賛公開中!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
RailsとAIRで作成する画像のRevolver表示連載記事一覧
この記事の著者

ryujinseiichi(リュウジンセイイチ)

http://ryujinseiichi.sblo.jp/ RubyやAIRなどの新規技術に興味があり、研究を行っています。 最近、seasar2やBPMの研究も始めました。  

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2658 2009/10/20 17:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング