oss-gate / workshop

OSSの開発に未参加または参加したことはあるけどまだ自信がない人を後押しするワークショップ用のリポジトリー
124 stars 547 forks source link

OSS Gate Workshop 2017-01-16: colorbox: amazon-ecs: Work log #200

Closed colorbox closed 7 years ago

colorbox commented 7 years ago

This is a work log of "OSS Gate".

"OSS Gate" is about an activity to increase OSS developers.

Here's been discussed in Japanese. Thanks.


OSS Gate へようこそ。

OSS Gateワークショップでは一人ずつ issue を作り、そこに作業ログを残しながら進めます。 過去のビギナーのものはこちらで見られます。 https://github.com/oss-gate/workshop/issues?q=is%3Aissue+is%3Aclosed

この issue 作成時点でまずやること

作業ログを書くタイミング

作業ログを書くタイミングは次のタイミングです。

作業ログに書く内容

作業ログに残すことは次のことです。「備考」以外は作業の邪魔にならないように一言でよいです。備考は作業に役立つので必要な分だけ書いてください。

ログはコメントとして追記していってください。テンプレートは次の通りです。

* 作業:(ここにやること、やっていること、やったことを書く)
* 思っていること:(今どう思っているかを書く)

備考:(必要なら必要なだけ書く。必要ないなら書かなくてもよい。)

例1(備考なし):

* 作業:インストールを始めた
* 思っていること:ドキュメント通りに進めれば大丈夫だろう

例2:

* 作業:インストールが失敗した
* 思っていること:ドキュメントに手順が足りない?

備考:エラーメッセージは次の通り

```text
XXX is not found
```

必要なファイルが足りないのかなぁ。

ふりかえり

作業ログは、ビギナーが、このワークショップを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。

作業ログを元にメンターと「ふりかえり」をするタイミングがあります。「ふりかえり」では次のことをします。

メンターは次のようなフィードバックをします。これは、ビギナーとは違う視点からビギナーの行動を観察することおよびメンターの経験があるからできることです。(「ふりかえり」の前にこんなフィードバックをよろしくお願いします!とお願いすると効果が高まるので実践してみましょう。)

このように、ビギナーの作業をメンター視点で一緒に整理し、ビギナーの今後の行動に活かす活動がここでいう「ふりかえり」です。そのため、「ビギナーにとって」ログに残すべきかどうか、という視点ではなく、「とりあえずログに残す」という視点でログを残してください。これは、ビギナーが重要だと判断しなくてもメンターの視点から見たら大事なこともあるからです。

zonuexe commented 7 years ago

こんにちはこんにちは ヾ(〃><)ノ゙

colorbox commented 7 years ago

よろしくお願いします。

colorbox commented 7 years ago

やりたいこと

amazon-ecs のgemを手元に持ってくる。

やったこと

colorbox commented 7 years ago

テストを動かしたい

colorbox commented 7 years ago

ので、ソースを見てみる READMEにはそれらしき記述がない、CONTRIBUTE.mdファイルもないので、そこから情報は取り出せない。 ディレクトリ形式から、railsのデフォルトのテスト機構を使っているようなので、それで実行してみる。

colorbox commented 7 years ago

コマンドを思い出せないのでググる

colorbox commented 7 years ago

Gemfileを覗く そこから、開発用にrakeが導入されていることがわかった。 プロジェクト内のRakefileを覗くと、rakeコマンドでテストが実行されることがわかった。

colorbox commented 7 years ago

rakeでテストを実行しようとすると、下記エラーで失敗した。

/Users/merge/.rbenv/versions/2.3.3/bin/ruby -w -I"lib:test" -I"/Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib" "/Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb" "test/amazon/ecs_test.rb" 
/Users/merge/work/amazon-ecs/test/amazon/ecs_test.rb:13:in `<class:EcsTest>': AWS_ACCESS_KEY_ID env variable is not set (RuntimeError)
        from /Users/merge/work/amazon-ecs/test/amazon/ecs_test.rb:8:in `<top (required)>'
        from /Users/merge/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /Users/merge/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb:15:in `block in <main>'
        from /Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb:4:in `select'
        from /Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb:4:in `<main>'
rake aborted!
Command failed with status (1): [ruby -w -I"lib:test" -I"/Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib" "/Users/merge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb" "test/amazon/ecs_test.rb" ]

Tasks: TOP => default => test
(See full trace by running task with --trace)
colorbox commented 7 years ago

テストとエラー内容から、AWSにアクセスするための認証トークンが必要なことがわかった。

colorbox commented 7 years ago

AWSの認証情報をAWSのサイトから取り出せないか見てみる。

colorbox commented 7 years ago

AWSのコンソールから、AWSの認証情報を再生成した。

colorbox commented 7 years ago

その認証情報を使用してテスト実行を行う。 export ${変数名}='${トークン}'で環境変数にトークンを格納する。

colorbox commented 7 years ago

その状態で、rakeを実行すると、テストが実行された。 ただし、エラーが大量に出ている。

=======================================================================================================================================================================================================
Error: test_browse_node_lookup(Amazon::EcsTest): Amazon::RequestError: HTTP Response: 400 Bad Request - Your AKIAJS276YTFQGQPMG7Q is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/gp/associates/join/landing/main.html.
/Users/merge/work/amazon-ecs/lib/amazon/ecs.rb:146:in `send_request'
/Users/merge/work/amazon-ecs/lib/amazon/ecs.rb:118:in `browse_node_lookup'
/Users/merge/work/amazon-ecs/test/amazon/ecs_test.rb:199:in `test_browse_node_lookup'
     196:   end
     197: 
     198:   def test_browse_node_lookup
  => 199:     resp = Amazon::Ecs.browse_node_lookup("17")
     200:     assert resp.is_valid_request?, "Not a valid request"
     201: 
     202:     items = resp.get_elements("BrowseNode")
=======================================================================================================================================================================================================
E
colorbox commented 7 years ago

エラー文言内に下記ページへのガイドがあったためそこを見る。 https://affiliate-program.amazon.com/gp/associates/join/landing/main.html

colorbox commented 7 years ago

そもそもAWSは関係なかったので、無駄に生成したトークンを無効化する。

colorbox commented 7 years ago

amazon Product Advertising API関連なので、そこの認証情報を取ってこれないか見てみる

colorbox commented 7 years ago

AWSの認証情報が必要なようなので、もう一度認証情報を見てみる。 IAMの認証情報を再度生成し、それを環境変数にセットする。

colorbox commented 7 years ago

認証情報をセットしたが、同じエラーが出てくる。 テストを見てみると、associateタグをセットしている箇所がある。 このタグを自分のものに書き換えてテストを再度実行したが、またエラーとなった。

colorbox commented 7 years ago

http://webservices.amazon.com/scratchpad/index.html?rw_useCurrentProtocol=1&rw_useCurrentProtocol=1 API実行をテストできるツールがamazonから公開されているため、これを使用して認証情報が正しいかの確認を行う。

colorbox commented 7 years ago

必要情報を入力してツールを動かすと正常に動作した。 テストとの相違点は、国の指定。 国を指定する箇所をREADMEなどから確認する。

knokmki612 commented 7 years ago

ふりかえりしました!

READMEにはそれらしき記述がない、CONTRIBUTE.mdファイルもないので、そこから情報は取り出せない。

情報がなかった、というのは、フィードバックできそうですね!

koic commented 7 years ago

README だけ見ても動かせないポイントがあれば、不足している点を加筆すると後で動かそうとした人が同じようにつまづかなくなるというフィードバックにできそうです。

また、コントリビューションのためのテストの実行方法が分かりづらかったようであれば、コントリビューションしやすくするためのテストの簡単な手順があると、あとでコントリビューションしようとした人の助けになりそうですね。

colorbox commented 7 years ago

VCRを導入するというアドバイスも貰ったので、テストが実行できたらVCRの導入も行う。

zonuexe commented 7 years ago

めも: そもそもこの開発者は、現時点で他人がテストを動作させることを想定してなさそう

colorbox commented 7 years ago

テストで国指定が必要な事についてたどり着くには、テスト対象のコードを読まないとわからない。 それについてREADMEに追記したら良いかも?

knokmki612 commented 7 years ago

おつかれさまでした!