clear-code / sezemi-2015

2015年のSEゼミ関連のデータを置くリポジトリー
Other
14 stars 9 forks source link

OSS Hack Weekend: shunsuke227ono: rake: Ruby: 作業ログ #39

Closed shunsuke227ono closed 9 years ago

shunsuke227ono commented 9 years ago

https://github.com/ruby/rake

作業ログは、参加者が、このイベントを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。

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

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

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

ログに残すときは次のようなときです。

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

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

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

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

例1(備考なし):

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

例2:

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

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

```text
XXX is not found

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

shunsuke227ono commented 9 years ago
shunsuke227ono commented 9 years ago

備考: そのgemのイシューからとっつきやすそうなものを探す gemどうしよ。選び出す基準が。

shunsuke227ono commented 9 years ago
source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.3'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

rails 4.2.3 ∟ actionmailer = 4.2.3 ∟ actionpack = 4.2.3 ∟ actionview = 4.2.3 ∟ activejob = 4.2.3 ∟ activemodel = 4.2.3 ∟ activerecord = 4.2.3 ∟ activesupport = 4.2.3 ∟ bundler < 2.0, >= 1.3.0 ∟ railties = 4.2.3 ∟ sprockets-rails >= 0

sqlite3 ∟ hoe ~> 3.13 ∟ hoe-bundler ~> 1.0 ∟ mini_portile ~> 0.6.1 ∟ minitest ~> 5.4 ∟ rake-compiler ~> 0.9.3 ∟ rdoc ~> 4.0

sass-rails ∟ railties < 5.0, >= 4.0.0 ∟ sass ~> 3.1 ∟ sprockets < 4.0, >= 2.8 ∟ sprockets-rails < 4.0, >= 2.0 ∟ tilt ~> 1.1

uglifier coffee-rails jquery-rails turbolinks jbuilder sdoc spring

shunsuke227ono commented 9 years ago

備考: fix typoおじさん、version up おじさん。モチベ: 機能追加したい/貢献したい/経験積みたい

shunsuke227ono commented 9 years ago

入れたら、rakeタスクみて、テストしてるタスクを見つける予定 cloneした。https://github.com/rails/rails/tree/master/activesupport/test にtestに関するコードはありそう。で、testを回してみたいが、test回すコマンドがわからない. test回してみた後に何をするかの見通しが立っていない.

shunsuke227ono commented 9 years ago

rails が依存してるgemがinstallされてるのが見える。

shunsuke227ono commented 9 years ago

備考:

onoshunsuke@localhost:(master) $ bundle install                              [/Users/onoshunsuke/rails/activesupport]
Fetching git://github.com/bkeepers/qu.git
Fetching git://github.com/rails/sprockets-rails.git
Fetching git://github.com/mikel/mail.git
Fetching git://github.com/rails/arel.git
Fetching git://github.com/rails/jquery-rails.git
Fetching git://github.com/rails/globalid.git
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies......
Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.2
Installing minitest 5.3.3
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 5.0.0.alpha from source at .
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2
Using nokogiri 1.6.6.2
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.6
Using loofah 2.0.1
Using rails-html-sanitizer 1.0.2
Using actionview 5.0.0.alpha from source at .
Using rack 1.6.0
Using rack-test 0.6.3
Using actionpack 5.0.0.alpha from source at .
Using globalid 0.3.5 from git://github.com/rails/globalid.git (at master)
Using activejob 5.0.0.alpha from source at .
Using mime-types 2.4.3
Using mail 2.6.3.edge from git://github.com/mikel/mail.git (at master)
Using actionmailer 5.0.0.alpha from source at .
Using activemodel 5.0.0.alpha from source at .
Using arel 7.0.0.alpha from git://github.com/rails/arel.git (at master)
Using activerecord 5.0.0.alpha from source at .
Installing amq-protocol 1.9.2
Installing beaneater 0.3.3
Installing dante 0.1.5
Installing backburner 0.4.6
Installing bcrypt 3.1.10
Installing benchmark-ips 2.1.1
Using bundler 1.9.4
Installing bunny 1.7.0
Using columnize 0.9.0
Installing byebug 4.0.5
Using hitimes 1.2.2
Using timers 4.0.1
Using celluloid 0.16.0
Installing coffee-script-source 1.9.0
Installing execjs 2.3.0
Using coffee-script 2.3.0
Using method_source 0.8.2
Using thor 0.19.1
Using railties 5.0.0.alpha from source at .
Using coffee-rails 4.1.0
Installing connection_pool 2.1.1
Installing dalli 2.7.2
Using delayed_job 4.0.6
Using delayed_job_active_record 4.0.3
Using jquery-rails 4.0.3 from git://github.com/rails/jquery-rails.git (at master)
Installing mustache 1.0.0
Installing kindlerb 0.1.1
Installing metaclass 0.0.4
Installing mocha 0.14.0
Installing mono_logger 1.1.0
Using multi_json 1.11.0
Installing mysql 2.9.1
Using mysql2 0.3.18
Installing pg 0.18.1
Using qu 0.2.0 from git://github.com/bkeepers/qu.git (at master)
Using qu-rails 0.2.0 from git://github.com/bkeepers/qu.git (at master)
Installing redis 3.2.1
Installing redis-namespace 1.5.1
Using qu-redis 0.2.0 from git://github.com/bkeepers/qu.git (at master)
Installing que 0.9.2
Installing queue_classic 3.1.0
Installing racc 1.4.12
Installing rack-cache 1.2
Installing rack-protection 1.5.3
Installing sprockets 3.0.2
Using sprockets-rails 3.0.0.beta1 from git://github.com/rails/sprockets-rails.git (at master)
Using rails 5.0.0.alpha from source at .
Using rdoc 4.2.0
Installing redcarpet 3.2.3
Using tilt 1.4.1
Installing sinatra 1.4.5
Installing vegas 0.1.11
Installing resque 1.25.2
Installing rufus-scheduler 3.0.9
Installing resque-scheduler 4.0.0
Using sdoc 0.4.1
Installing sequel 4.19.0
Installing sigdump 0.2.2
Installing serverengine 1.5.10
Installing sidekiq 3.3.2
Installing thread 0.1.7
Installing sneakers 1.0.4
Using sqlite3 1.3.10
Installing stackprof 0.2.7
Installing sucker_punch 1.3.2
Using turbolinks 2.5.3
Using uglifier 2.7.0
Installing w3c_validators 1.2
Bundle complete! 47 Gemfile dependencies, 95 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rufus-scheduler:

***

Thanks for installing rufus-scheduler 3.0.9

It might not be 100% compatible with rufus-scheduler 2.x.

If you encounter issues with this new rufus-scheduler, especially
if your app worked fine with previous versions of it, you can

A) Forget it and peg your Gemfile to rufus-scheduler 2.0.24

and / or

B) Take some time to carefully report the issue at
   https://github.com/jmettraux/rufus-scheduler/issues

For general help about rufus-scheduler, ask via:
http://stackoverflow.com/questions/ask?tags=rufus-scheduler+ruby

Cheers.

***
    %                                                                                                                 onoshunsuke@localhost:(master*) $ bundle exec rake test                      [/Users/onoshunsuke/rails/activesupport]
/Users/onoshunsuke/.rbenv/versions/2.1.4/bin/ruby -w -I"lib:test" -I"/Users/onoshunsuke/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.4.2/lib" "/Users/onoshunsuke/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb" "test/**/*_test.rb"
I, [2015-07-11T14:13:39.572091 #30875]  INFO -- : localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 11211
Skipping memcached tests. Start memcached and try again.
Run options: --seed 64103

# Running:

...............................................................................................................................................SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E..E....................................................................................F...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E..SSS

Finished in 9.499247s, 339.0795 runs/s, 40116.5482 assertions/s.

  1) Error:
NumericExtFormattingTest#test_negative:
NoMethodError: undefined method `next_float' for 0.0:Float
    /Users/onoshunsuke/rails/activesupport/test/core_ext/numeric_ext_test.rb:447:in `test_negative'

  2) Error:
NumericExtFormattingTest#test_positive:
NoMethodError: undefined method `next_float' for 0.0:Float
    /Users/onoshunsuke/rails/activesupport/test/core_ext/numeric_ext_test.rb:409:in `test_positive'

  3) Failure:
RangeTest#test_include_on_time_with_zone [/Users/onoshunsuke/rails/activesupport/test/core_ext/range_ext_test.rb:111]:
[TypeError] exception expected, not
Class: <SystemStackError>
Message: <"stack level too deep">
---Backtrace---
/Users/onoshunsuke/rails/activesupport/lib/active_support/time_with_zone.rb:399
---------------

  4) Error:
MarshalTest#test_that_Marshal#load_still_works:
NoMethodError: undefined method `super_method' for #<Method: Module(ActiveSupport::MarshalWithAutoloading)#load>
    /Users/onoshunsuke/rails/activesupport/test/core_ext/marshal_test.rb:18:in `block (2 levels) in <class:MarshalTest>'
    /Users/onoshunsuke/rails/activesupport/test/core_ext/marshal_test.rb:16:in `each'
    /Users/onoshunsuke/rails/activesupport/test/core_ext/marshal_test.rb:16:in `block in <class:MarshalTest>'

3221 runs, 381077 assertions, 1 failures, 3 errors, 158 skips

You have skipped tests. Run with --verbose for details.
rake aborted!
Command failed with status (1): [ruby -w -I"lib:test" -I"/Users/onoshunsuke/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.4.2/lib" "/Users/onoshunsuke/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.4.2/lib/rake/rake_test_loader.rb" "test/**/*_test.rb" ]

Tasks: TOP => test
(See full trace by running task with --trace)

-> branch変えてtest実行してみて、それでもエラーが出るかを試す。出るとすれば、マスターのみの問題に。

shunsuke227ono commented 9 years ago
onoshunsuke@localhost:(4-2-stable*) $ git pull origin 4-2-stable:4-2-stable  [/Users/onoshunsuke/rails/activesupport]
From https://github.com/shunsuke227ono/rails
 ! [rejected]        4-2-stable -> 4-2-stable  (non-fast-forward)
shunsuke227ono commented 9 years ago

マスターでテスト実行したらエラーでた。 -> https://travis-ci.org/rails/rails でテストの実行結果の状況確認できるが、ruby 2.2.2でテスト通ってるのがわかる。ローカルでは、versionが2.1.4だったゆえにエラーが起きていたよう。 -> version更新して、テスト実行しなおしてみる。

shunsuke227ono commented 9 years ago
onoshunsuke@localhost:(master*) $ bundle exec rake test                      [/Users/onoshunsuke/rails/activesupport]
/Users/onoshunsuke/.rbenv/versions/2.2.2/bin/ruby -w -I"lib:test" -I"/Users/onoshunsuke/.rbenv/versions/2.2.2/lib/ruby/2.2.0" "/Users/onoshunsuke/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/**/*_test.rb"
I, [2015-07-11T14:54:41.023598 #94941]  INFO -- : localhost:11211 failed (count: 0) Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 11211
Skipping memcached tests. Start memcached and try again.
Run options: --seed 22404

# Running:

...............................................................................................................................................SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................SSS

Finished in 9.057228s, 355.6276 runs/s, 42078.1060 assertions/s.

3221 runs, 381111 assertions, 0 failures, 0 errors, 158 skips

You have skipped tests. Run with --verbose for details.
shunsuke227ono commented 9 years ago

https://github.com/rails/rails/issues/13641 であるのと全く同じ問題を得た。このイシュー上にある解決方法で解決した。 そもそも、 Run with --verbose for details. って出てくるのミスリードじゃないか

shunsuke227ono commented 9 years ago

--verboseはminitestでのオプション。TESTOPTS="-v"はrake/testtaskの書き方。

rake taskをactivesupportから叩くと、minitestが、--verboseつけてとmsgだすが、rake test実行する場合は、TESTOPTS="-v" つける必要あり。--verboseつけても機能しない。

-> わかりにくい。

対応方法としては、

testtaskの内部でshell呼び出して、rubyを新しく起動してる。shとか描いてある。rake taskでのrubyと内部で呼び出してるrubyが違う可能性がある。そうなると、変数が引き継がれない。だから環境変数に入れる。TESTOPTS="-v"で環境変数に入れると、rubyが変わっても引き継がれる。

-> どうすればいいか?いかにメッセージ出せばわかりやすいのか?挙動を変えるのか?

shunsuke227ono commented 9 years ago

rake testtaskのコードを読みながら、そちら

--verbose -> 警告 --verbose -> 内部的に変換 TESTOPTS だよというのを、rakeの方のドキュメントに書く。

自分が実行した時にどうしたら迷わなかったかという観点で考える。

rakeの既存のコードでオプションをどう受け取ってるか、空気をみる。 オプションをよしなに判断してるところがあれば、参考にする。

shunsuke227ono commented 9 years ago

CD -> cdへのプルリク出してみました

shunsuke227ono commented 9 years ago

activesupport ∟テストfiles (minitestを指定)

rake(make file的な役割)を経由してそのminitestを使用しているテストsを実行している。

rakeへのオプションは、rake内でのコマンドにオプションとしてそのまま渡るとは限らない。なぜなら、他のrubyが起動しているから。ゆえに、rakeを経由したコマンド先で、オプションを引き継ぎたい時は、環境変数にオプションを入れてやる必要がある。

rakeタスクを経由してminitestを呼び出しているから、オプションの渡し方が違ってしまってる。

そのオプションの渡し方の違いゆえの、分かりにくさをどう解消するか。

shunsuke227ono commented 9 years ago

linux 出力

--verboseてオプションがrakeタスクに渡された時に、TESTOPTS使ってねって書くのもありだな。

shunsuke227ono commented 9 years ago

プルリクがruby-headでこけてたが、masterでも他のプルリクでもこけてたので 気にしない

ruby-headのbugであって、このプルリクが原因でこけたわけではない。

shunsuke227ono commented 9 years ago

minitestの方でいかにエラーメッセージ出しているか知る。 https://github.com/seattlerb/minitest/blob/35ec0145be4ee09bd7b84088c809d27ce42ce746/lib/minitest.rb

rakeタスク側でのオプションのつけ方をどうメッセージで出すか。

shunsuke227ono commented 9 years ago

--verbose 使ってね、と出るのは、minitestを使ってる時のみ。 TESTOPTS 使うべきなのは、rake/testtask使ってるとき。

案1) TESTOPTSつけてないときに、TESTOPTSつければoption追加できるよ、と追記すべき? -> minitest使ってるときは、確かにそれで助かる。が、他のときは?今まで別に必要なかった。 -> そこにそのメッセージを追加するモチベは、activesupportからの困惑を防ぐため。それをrakeの方に修正要求するってのは変か。

案2) activesupportからの分かりやすさ向上がモチベなので、activesupportの方で、optionがおかしいとき(OR 正しいoptionが付いていないとき) に TESTOPTSつけてねと返す、

shunsuke227ono commented 9 years ago

skipされたテストある、かつ、validなオプション付いていない -> エラーメッセージ表示、をしたい。 どうすればよいか。

shunsuke227ono commented 9 years ago

「rakeタスクを通して、minitestクラスのテストを実行している場合、」 => 日本語としてmake sense?

英語にどうしよう?

kou commented 9 years ago

お疲れ様でした!