bundle gem して rspec で試験できるように、なメモ

とりあえず bundle gem 直後の状態は git init してる形らしい。つうか aws-sdk の spec 確認が先らしいのでもごもごしてみるなど。
ええと、spec/aws/ec2/vpc_collection_spec.rb を確認してたんですが書いてあることがイマイチよく分からない。うんうん唸りつつググッてみるに以下を発見。

これで AWS::EC2::Client な stub_for とか stub なあたりがイメージできたカンジ。とは言え、irb で

ec2.client.stub(:create_vpc).and_return(tmp)

とか NoMethodError とか言われてワケワカ。とは言え、vpc_collection_spec.rb にも以下な記述があるんですよね。

          let(:response) { client.stub_for(:create_vpc) }

          before(:each) do
            response.data[:vpc] = vpc_details
            client.stub(:create_vpc).and_return(response)
          end

むむむ。

とりあえず

試験を先頭からナメてみます。つうかやっぱ stub というメソド (?) の根拠が分からない。むむむむ、とか言ってるとこいつらが rspec なソレであるらしいことが分かってきました。
上記の before なソレは client の create_vpc というメソドは response を戻す、という記述になるのか。むむ。であれば #create な context の記述は読めるな。
てか、これ標準装備ってことは rspec 何でもアリ、ですね。すばらです。
なんとなく作業進めてみるので何かあれば追記するかもしれません。

追記

現状、以下なカンジになってます。lib/vpccreate.rb

require "vpccreate/version"

module Vpccreate
  # Your code goes here...
end

クラスの名前どうしよ。そもそも Vpccreate という module の名前がどうなのか。

  • bundler gem vpc-manage にして
  • modules は AWS にしてやれ
  • クラスは VpcManage でソースファイルは vpc_manage.rb で良いのかな

やっぱ今日かなりへろへろなので明日集中対応ってことで今日は休みます。端末くんも dropbox な同期処理でがんばってるみたいですし。

さらに追記

ヤッてみた。

$ bundle gem vpc-manage
      create  vpc-manage/Gemfile
      create  vpc-manage/Rakefile
      create  vpc-manage/LICENSE.txt
      create  vpc-manage/README.md
      create  vpc-manage/.gitignore
      create  vpc-manage/vpc-manage.gemspec
      create  vpc-manage/lib/vpc-manage.rb
      create  vpc-manage/lib/vpc-manage/version.rb
Initializating git repo in /home/rms/OLDHome/rms/tmp/aws-ruby/vpc-manage

lib/vpc-manage.rb が以下。

$ cat lib/vpc-manage.rb 
require "vpc-manage/version"

module Vpc
  module Manage
    # Your code goes here...
  end
end

ふむ。つーことは aws-vpc とかって名前がありなのかどうか。gem search -r してみたところでは無いな。つうか色々あるんですね。

aws (2.7.0)
aws-alert-monitor (0.0.5)
aws-auth (0.9.1)
aws-cloudfront (0.0.4)
aws-controller (0.0.4)
aws-ext (0.1.2)
aws-ie (0.0.3)
aws-pricing (0.7.0)
aws-s3 (0.6.3)
aws-s3-akhtaboot (0.6.2.1288082910)
aws-s3-cse (0.1.1)
aws-s3-instructure (0.6.2.1352914936)
aws-s3-multi-region (0.6.3)
aws-sdb (0.3.1)
aws-sdk (1.8.1.2)
aws-sdk-cloudwatch (0.0.6)
aws-security-group-state (0.0.2)
aws-ses (0.4.4)
aws-ses-rails31 (0.4.4)
aws-url (0.2.0)
aws_cf_signer (0.1.1)
aws_cloud_map (0.2.0)
aws_cloud_search (0.0.2)
aws_credentials (0.7.0)
aws_csshx (0.1.4)
aws_imageshack (0.4.0)
aws_keychain (0.0.2)
aws_onchange (1.0.4)
aws_pipes (0.0.6)
aws_s3_export (0.2.0)
aws_sdb_bare (1.2.2)
aws_sdk (3.1.5)
aws_sns_publisher (0.0.0)
aws_tools (0.0.2)
aws_tracker (0.0.4)

とりあえず作ってやれ。

$ bundle gem aws-vpc
      create  aws-vpc/Gemfile
      create  aws-vpc/Rakefile
      create  aws-vpc/LICENSE.txt
      create  aws-vpc/README.md
      create  aws-vpc/.gitignore
      create  aws-vpc/aws-vpc.gemspec
      create  aws-vpc/lib/aws-vpc.rb
      create  aws-vpc/lib/aws-vpc/version.rb
Initializating git repo in /home/rms/OLDHome/rms/tmp/aws-ruby/aws-vpc

本体はこうするか。

require "aws-vpc/version"

module AWS
  class VPC
  end
end

あと、以下を修正とか追加とか。

  • Rakefile 修正
  • spec 追加
  • tasks 追加

で、試験を書きながら実装してけば良いのかどうか。基本的には wrapper でしかないので実装自体は楽だと思っているのですがどうなんだろ。つーか、実装検討よりも試験を云々する方がハードル高かったです。
# て作ってもいない時点でこれは無いなorz

さらに追記

む、lib 配下は aws というディレクトリを掘って、vpc.rb を作るのか。大丈夫かな。あるいは spec 配下も同様なのか。ここで手を出すと眠れなくなるはずなので一旦リリース。