Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSS Gate Workshop: tokyo: 2019-07-27: kamelo151515: fluent-logger-ruby: Work log #1220

Closed
kayawari opened this issue Jul 27, 2019 · 44 comments
Closed

Comments

@kayawari
Copy link
Contributor

This is a work log of a "OSS Gate workshop".
"OSS Gate workshop" is an activity to increase OSS developers.
Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${ACCOUNT_NAME}: ${OSS_NAME}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

  • スライド:ワークショップの進行に使っているスライドがあります。
  • チャット:OSS開発に関することならなんでも相談できます。ワークショップが終わった後もオンラインで相談しながら継続的にOSSの開発に参加しましょう!
  • シナリオ:ワークショップの目的・内容・進め方の詳細が書いています。
  • 過去のビギナーの作業ログ:他の人の作業ログから学べることがいろいろあるはずです。
@nico-hn
Copy link
Contributor

nico-hn commented Jul 27, 2019

今日はよろしくお願いいたします。

@kayawari kayawari changed the title OSS Gate Workshop: tokyo: 2019-07-27: kamelo151515: ${OSS_NAME}: Work log OSS Gate Workshop: tokyo: 2019-07-27: kamelo151515: fluent-logger-ruby: Work log Jul 27, 2019
@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

https://github.com/fluent/fluent-logger-ruby
これに取り組みます
Licenseは Apache License, Version 2.0でした

最近仕事で触っていたgemだったので、ドキュメントやリファクタリングのPRが出せるかなと思い、選びました!

@kayawari
Copy link
Contributor Author

まずREADMEを読み始めた!
https://github.com/fluent/fluent-logger-ruby/blob/master/README.md

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

  • READMEを見てみたけど、コマンドとかは乗っているけど、インストール方法や実際の動かし方が書いてない。。。
  • ドキュメントにはないけれど、プロジェクトの頭にGemfileがあった。gemfileがあるということは、bundle installを叩いたら、gemfileに書いてあるライブラリ(今回のfluent-logger-rubyに依存しているライブラリ)がインストールされるはずなので、bundle installを叩いてみた
[takayuki]$ bundle install                                                                                                                                           [master]
Traceback (most recent call last):
	2: from /Users/takayuki/.rbenv/versions/2.6.3/bin/bundle:23:in `<main>'
	1: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
/Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': Could not find 'bundler' (2.0.1) required by your /Users/takayuki/src/github.com/fluent/fluent-logger-ruby/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.0.1`

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

bundle installしたらエラーになってしまった!bundlerがない!ので、エラーにある gem install bundler:2.0.1を叩いてみた!!!

[takayuki]$ gem install bundler:2.0.1                                                                                                                                [master]
Fetching bundler-2.0.1.gem
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed

bundle install出来たみたい!

[takayuki]$ bundle install                                                                                                                                           [master]
The git source `git://github.com/fluent/fluentd.git` uses the `git` protocol, which transmits data without encryption. Disable this warning with `bundle config git.allow_insecure true`, or switch to the `https` protocol to keep your data secure.
Fetching gem metadata from https://rubygems.org/........
Fetching git://github.com/fluent/fluentd.git
Fetching rake 12.3.2
Installing rake 12.3.2
Using bundler 2.0.1
Fetching cool.io 1.5.4
Installing cool.io 1.5.4 with native extensions
Fetching diff-lcs 1.3
Installing diff-lcs 1.3
Fetching dig_rb 1.0.1
Installing dig_rb 1.0.1
Fetching docile 1.3.2
Installing docile 1.3.2
Fetching msgpack 1.3.0
Installing msgpack 1.3.0 with native extensions
Using fluent-logger 0.8.1 from source at `.`
Fetching http_parser.rb 0.6.0
Installing http_parser.rb 0.6.0 with native extensions
Fetching sigdump 0.2.4
Installing sigdump 0.2.4
Fetching serverengine 2.1.1
Installing serverengine 2.1.1
Fetching strptime 0.2.3
Installing strptime 0.2.3 with native extensions
Fetching thread_safe 0.3.6
Installing thread_safe 0.3.6
Fetching tzinfo 1.2.5
Installing tzinfo 1.2.5
Fetching tzinfo-data 1.2019.2
Installing tzinfo-data 1.2019.2
Fetching yajl-ruby 1.4.1
Installing yajl-ruby 1.4.1 with native extensions
Using fluentd 1.6.2 from git://github.com/fluent/fluentd.git (at master@7f1598e)
Fetching json 2.2.0
Installing json 2.2.0 with native extensions
Fetching power_assert 1.1.4
Installing power_assert 1.1.4
Fetching rspec-support 3.8.2
Installing rspec-support 3.8.2
Fetching rspec-core 3.8.2
Installing rspec-core 3.8.2
Fetching rspec-expectations 3.8.4
Installing rspec-expectations 3.8.4
Fetching rspec-mocks 3.8.1
Installing rspec-mocks 3.8.1
Fetching rspec 3.8.0
Installing rspec 3.8.0
Fetching rspec-its 1.3.0
Installing rspec-its 1.3.0
Fetching simplecov-html 0.10.2
Installing simplecov-html 0.10.2
Fetching simplecov 0.17.0
Installing simplecov 0.17.0
Fetching simplecov-vim 0.0.1
Installing simplecov-vim 0.0.1
Fetching test-unit 3.3.3
Installing test-unit 3.3.3
Fetching timecop 0.9.1
Installing timecop 0.9.1
Bundle complete! 9 Gemfile dependencies, 30 gems now installed.
Bundled gems are installed into `./vendor/bundle`
Post-install message from simplecov-vim:
Another tidy package brought to you by Judson

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

@nico-hn さんにアドバイス頂いた!

📝 そもそも上で

ドキュメントにはないけれど、プロジェクトの頭にGemfileがあった。gemfileがあるということは、bundle installを叩いたら、gemfileに書いてあるライブラリ(今回のfluent-logger-rubyに依存しているライブラリ)がインストールされるはずなので、bundle installを叩いてみた

って、やったけど、このライブラリや知識を持っていない人にとってはわからないので、ドキュメントにPRを出すチャンスかも。

@kayawari
Copy link
Contributor Author

gemを動かす方法を調べはじめた!これかな
http://webos-goodies.jp/archives/51106257.html

@nico-hn
Copy link
Contributor

nico-hn commented Jul 27, 2019

直接起動するコマンドの類いではなくライブラリなのですね。私の方で気になったのは、そもそもどうやってインストールするの?でした。gem名は何なのとか?

@kayawari
Copy link
Contributor Author

irbにgemをインストール出来ると思ったけど、出来ない。
gem listコマンドなどを叩いたら、そもそもfluent-logger-rubyが入っていないみたい。

[takayuki]$ irb                                                                                                                                                      [master]
irb(main):001:0> require "rubygems"
=> false
irb(main):002:0> gem "active_record", "=1.14.0"
Traceback (most recent call last):
        7: from /Users/takayuki/.rbenv/versions/2.6.3/bin/irb:23:in `<main>'
        6: from /Users/takayuki/.rbenv/versions/2.6.3/bin/irb:23:in `load'
        5: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
        4: from (irb):2
        3: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
        2: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
        1: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/dependency.rb:311:in `to_specs'
Gem::MissingSpecError (Gem::MissingSpecError)
irb(main):003:0> exit
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ irb                                                                                                                                                      [master]
irb(main):001:0> gem "active_record", "=1.14.0"
Traceback (most recent call last):
        7: from /Users/takayuki/.rbenv/versions/2.6.3/bin/irb:23:in `<main>'
        6: from /Users/takayuki/.rbenv/versions/2.6.3/bin/irb:23:in `load'
        5: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
        4: from (irb):1
        3: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
        2: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
        1: from /Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/dependency.rb:311:in `to_specs'
Gem::MissingSpecError (Gem::MissingSpecError)
irb(main):002:0> exit
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ ruby -v                                                                                                                                                  [master]
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ irb --help                                                                                                                                               [master]
Usage:  irb.rb [options] [programfile] [arguments]
  -f		    ~/.irbrc を読み込まない.
  -d                $DEBUG をtrueにする(ruby -d と同じ)
  -r load-module    ruby -r と同じ.
  -I path           $LOAD_PATH に path を追加する.
  -U                ruby -U と同じ.
  -E enc            ruby -E と同じ.
  -w                ruby -w と同じ.
  -W[level=2]       ruby -W と同じ.
  --context-mode n  新しいワークスペースを作成した時に関連する Binding
		    オブジェクトの作成方法を 0 から 3 のいずれかに設定する.
  --echo	    実行結果を表示する(デフォルト).
  --noecho	    実行結果を表示しない.
  --inspect	    結果出力にinspectを用いる(bcモード以外はデフォルト).
  --noinspect	    結果出力にinspectを用いない.
  --readline	    readlineライブラリを利用する.
  --noreadline	    readlineライブラリを利用しない.
  --prompt prompt-mode/--prompt-mode prompt-mode
		    プロンプトモードを切替えます. 現在定義されているプ
		    ロンプトモードは, default, simple, xmp, inf-rubyが
		    用意されています.
  --inf-ruby-mode   emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
		    に指定がない限り, readlineライブラリは使わなくなる.
  --sample-book-mode/--simple-prompt
		    非常にシンプルなプロンプトを用いるモードです.
  --noprompt	    プロンプト表示を行なわない.
  --single-irb	    irb 中で self を実行して得られるオブジェクトをサ
		    ブ irb と共有する.
  --tracer	    コマンド実行時にトレースを行なう.
  --back-trace-limit n
		    バックトレース表示をバックトレースの頭から n, 後ろ
		    からnだけ行なう. デフォルトは16

  --irb_debug n	    irbのデバッグレベルをnに設定する(非推奨).

  --verbose	    詳細なメッセージを出力する.
  --noverbose	    詳細なメッセージを出力しない(デフォルト).
  -v, --version	    irbのバージョンを表示する.
  -h, --help	    irb のヘルプを表示する.
  --		    以降のコマンドライン引数をオプションとして扱わない.

~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ irb -r fluent-logger-ruby                                                                                                                                [master]
/Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/init.rb:280: warning: LoadError: cannot load such file -- fluent-logger-ruby
irb(main):001:0> exit
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ irb -r fluent-logger                                                                                                                                     [master]
/Users/takayuki/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/init.rb:280: warning: LoadError: cannot load such file -- fluent-logger
irb(main):001:0> exit
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ gem list                                                                                                                                                 [master]

*** LOCAL GEMS ***

bigdecimal (default: 1.4.1)
bundler (2.0.1, default: 1.17.2)
cmath (default: 1.0.0)
csv (default: 3.0.9)
date (default: 2.0.0)
dbm (default: 1.0.0)
did_you_mean (1.3.0)
e2mmap (default: 0.1.0)
etc (default: 1.0.1)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.1.0)
forwardable (default: 1.2.0)
gdbm (default: 2.0.0)
io-console (default: 0.4.7)
ipaddr (default: 1.2.2)
irb (default: 1.0.0)
json (default: 2.1.0)
logger (default: 1.3.0)
matrix (default: 0.1.0)
minitest (5.11.3)
mutex_m (default: 0.1.0)
net-telnet (0.2.0)
openssl (default: 2.1.2)
ostruct (default: 0.1.0)
power_assert (1.1.3)
prime (default: 0.1.0)
psych (default: 3.1.0)
rake (12.3.2)
rdoc (default: 6.1.0)
rexml (default: 3.1.9)
rss (default: 0.2.7)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
shell (default: 0.7)
stringio (default: 0.0.2)
strscan (default: 1.0.0)
sync (default: 0.5.0)
test-unit (3.2.9)
thwait (default: 0.1.0)
tracer (default: 0.1.0)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ gem list | grep fluent

普段、bundle exec rails consoleに慣れているから、irbがわからない 💦

@kayawari
Copy link
Contributor Author

このgemをインストールしたい。なので、gem installを叩いた!

[takayuki]$ gem install fluent-logger                                                                                                                                [master]
Fetching fluent-logger-0.8.1.gem
Fetching msgpack-1.3.0.gem
Building native extensions. This could take a while...
Successfully installed msgpack-1.3.0
Successfully installed fluent-logger-0.8.1
Parsing documentation for msgpack-1.3.0
Installing ri documentation for msgpack-1.3.0
Parsing documentation for fluent-logger-0.8.1
Installing ri documentation for fluent-logger-0.8.1
Done installing documentation for msgpack, fluent-logger after 0 seconds
2 gems installed
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ gem list | grep fluent                                                                                                                                   [master]
fluent-logger (0.8.1)
~/src/github.com/fluent/fluent-logger-ruby
[takayuki]$ irb -r fluent-logger

@kayawari
Copy link
Contributor Author

gemをirbに読み込めたので、https://github.com/fluent/fluent-logger-ruby#simple に書いてあるコマンドを叩いて、ライブラリを動かし始めてみました。

irb(main):003:0> log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost', :port => 24224)
E, [2019-07-27T11:41:05.878908 #7797] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "localhost" port 24224
E, [2019-07-27T11:41:05.878963 #7797] ERROR -- : Connection will be retried.
=> #<Fluent::Logger::FluentLogger:0x00007fe12c80d0a8 @tag_prefix=nil, @host="localhost", @port=24224, @socket_path=nil, @nanosecond_precision=nil, @use_nonblock=false, @factory=#<MessagePack::Factory:0x00007fe12c80d008>, @packer=#<MessagePack::Packer:0x00007fe12c80cf90>, @mon=#<Monitor:0x00007fe12c80cea0 @mon_mutex=#<Thread::Mutex:0x00007fe12c80ce50>, @mon_mutex_owner_object_id=70302545504080, @mon_owner=nil, @mon_count=0>, @pending=nil, @connect_error_history=[1564195265], @limit=8388608, @log_reconnect_error_threshold=13, @buffer_overflow_handler=nil, @logger=#<Logger:0x00007fe12c80cd60 @level=1, @progname=nil, @default_formatter=#<Logger::Formatter:0x00007fe12c80ccc0 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x00007fe12c80cc70 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mon_mutex=#<Thread::Mutex:0x00007fe12c80cbf8>, @mon_mutex_owner_object_id=70302545503800, @mon_owner=nil, @mon_count=0>>, @wait_writeable=true, @last_error={70302528896980=>#<Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 24224>}>

Failed to connect fluentd

なので、Fluendを立ち上げないと、このライブラリを使えなそう?ということに気づいた

@kayawari
Copy link
Contributor Author

📝 #1220 (comment) と同じく困る人がいるはず。ここもPRチャンスかも!

@kayawari
Copy link
Contributor Author

fluentdの立ち上げ方を調べ始める。もしくは、モックとかあれば良さそうかも by @nico-hn

@kayawari
Copy link
Contributor Author

直接macにインストールするなら、これかな
https://docs.fluentd.org/installation/install-by-dmg

docker上なら、 @nico-hn さんが見つけてくださった https://hub.docker.com/r/fluent/fluentd/ がいいかも知れない

@kayawari
Copy link
Contributor Author

📝 テストを実行するドキュメントがない!!!

@kayawari
Copy link
Contributor Author

https://docs.fluentd.org/installation/install-by-dmg に書いてある通りにfluentdを起動してみました!

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

fluent-loggerを読み込んでirbを起動

[takayuki]$ irb -r fluent-logger                                                                                                                 

READMEにあるコマンドを叩いてみる

[master]
irb(main):001:0> log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost', :port => 24230)
=> #<Fluent::Logger::FluentLogger:0x00007fba8e14fa78 @tag_prefix=nil, @host="localhost", @port=24230, @socket_path=nil, @nanosecond_precision=nil, @use_nonblock=false, @factory=#<MessagePack::Factory:0x00007fba8e14f9d8>, @packer=#<MessagePack::Packer:0x00007fba8e14f960>, @mon=#<Monitor:0x00007fba8e14f848 @mon_mutex=#<Thread::Mutex:0x00007fba8e14f7d0>, @mon_mutex_owner_object_id=70219612191780, @mon_owner=nil, @mon_count=0>, @pending=nil, @connect_error_history=[], @limit=8388608, @log_reconnect_error_threshold=13, @buffer_overflow_handler=nil, @logger=#<Logger:0x00007fba8e14f758 @level=1, @progname=nil, @default_formatter=#<Logger::Formatter:0x00007fba8e14f690 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x00007fba8e14f640 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mon_mutex=#<Thread::Mutex:0x00007fba8e14f5c8>, @mon_mutex_owner_object_id=70219612191520, @mon_owner=nil, @mon_count=0>>, @wait_writeable=true, @last_error={}, @con=#<TCPSocket:fd 13, AF_INET, 127.0.0.1, 55295>, @logged_reconnect_error=false>
irb(main):002:0> log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost', :port => 24230)
=> #<Fluent::Logger::FluentLogger:0x00007fba8d0d9810 @tag_prefix=nil, @host="localhost", @port=24230, @socket_path=nil, @nanosecond_precision=nil, @use_nonblock=false, @factory=#<MessagePack::Factory:0x00007fba8d0d9770>, @packer=#<MessagePack::Packer:0x00007fba8d0d96f8>, @mon=#<Monitor:0x00007fba8d0d9608 @mon_mutex=#<Thread::Mutex:0x00007fba8d0d95b8>, @mon_mutex_owner_object_id=70219603561220, @mon_owner=nil, @mon_count=0>, @pending=nil, @connect_error_history=[], @limit=8388608, @log_reconnect_error_threshold=13, @buffer_overflow_handler=nil, @logger=#<Logger:0x00007fba8d0d9568 @level=1, @progname=nil, @default_formatter=#<Logger::Formatter:0x00007fba8d0d9518 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x00007fba8d0d94c8 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mon_mutex=#<Thread::Mutex:0x00007fba8d0d9478>, @mon_mutex_owner_object_id=70219603561060, @mon_owner=nil, @mon_count=0>>, @wait_writeable=true, @last_error={}, @con=#<TCPSocket:fd 14, AF_INET, 127.0.0.1, 55297>, @logged_reconnect_error=false>
irb(main):003:0>
irb(main):004:0>
irb(main):005:0>
irb(main):006:0> unless log.post("myapp.access", {"agent" => "foo"})
irb(main):007:1>   p log.last_error # You can get last error object via last_error method
irb(main):008:1> end
=> nil
irb(main):009:0>
irb(main):010:0> unless log.post("myapp.access", {"agent" => "foo"})
irb(main):011:1>   p log.last_error # You can get last error object via last_error method
irb(main):012:1> end
#<Errno::EPIPE: Broken pipe>
=> #<Errno::EPIPE: Broken pipe>
irb(main):013:0>
irb(main):014:0>
irb(main):015:0>
irb(main):016:0>
irb(main):017:0>
irb(main):018:0>
irb(main):019:0> unless log.post("myapp.access", {"agent" => "foo"})
irb(main):020:1>   p log.last_error # You can get last error object via last_error method
irb(main):021:1> end
=> nil
irb(main):022:0> log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost', :port => 24224)
=> #<Fluent::Logger::FluentLogger:0x00007fba8e115738 @tag_prefix=nil, @host="localhost", @port=24224, @socket_path=nil, @nanosecond_precision=nil, @use_nonblock=false, @factory=#<MessagePack::Factory:0x00007fba8e115670>, @packer=#<MessagePack::Packer:0x00007fba8e1155f8>, @mon=#<Monitor:0x00007fba8e115490 @mon_mutex=#<Thread::Mutex:0x00007fba8e115418>, @mon_mutex_owner_object_id=70219612072520, @mon_owner=nil, @mon_count=0>, @pending=nil, @connect_error_history=[], @limit=8388608, @log_reconnect_error_threshold=13, @buffer_overflow_handler=nil, @logger=#<Logger:0x00007fba8e115378 @level=1, @progname=nil, @default_formatter=#<Logger::Formatter:0x00007fba8e115210 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x00007fba8e1151c0 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mon_mutex=#<Thread::Mutex:0x00007fba8e115120>, @mon_mutex_owner_object_id=70219612072160, @mon_owner=nil, @mon_count=0>>, @wait_writeable=true, @last_error={}, @con=#<TCPSocket:fd 15, AF_INET, 127.0.0.1, 55326>, @logged_reconnect_error=false>
irb(main):023:0> unless log.post("myapp.access", {"agent" => "foo"})
irb(main):024:1>   p log.last_error # You can get last error object via last_error method
irb(main):025:1> end
=> nil
irb(main):026:0> unless log.post("debug.test", {"agent" => "foo"})
irb(main):027:1>   p log.last_error # You can get last error object via last_error method
irb(main):028:1> end
=> nil

途中Bronken::Pipeとか出たけど、fluentdに送信できていそう

[takayuki]$ tail -f /var/log/td-agent/td-agent.log
2019-07-27 11:58:44 +0900 [warn]: #0 [output_td] secondary type should be same with primary one primary="Fluent::Plugin::TreasureDataLogOutput" secondary="Fluent::Plugin::FileOutput"
2019-07-27 11:58:44 +0900 [info]: adding match pattern="debug.**" type="stdout"
2019-07-27 11:58:44 +0900 [info]: adding source type="forward"
2019-07-27 11:58:44 +0900 [info]: adding source type="http"
2019-07-27 11:58:44 +0900 [info]: adding source type="debug_agent"
2019-07-27 11:58:44 +0900 [info]: #0 starting fluentd worker pid=8033 ppid=8021 worker=0
2019-07-27 11:58:45 +0900 [info]: #0 [input_debug_agent] listening dRuby uri="druby://127.0.0.1:24230" object="Fluent::Engine"
2019-07-27 11:58:45 +0900 [info]: #0 [input_forward] listening port port=24224 bind="0.0.0.0"
2019-07-27 11:58:45 +0900 [info]: #0 fluentd worker is now running worker=0
2019-07-27 12:00:51.184662000 +0900 debug.test: {"json":"message"}

@kayawari
Copy link
Contributor Author

この動かす環境だけでも、READMEとかにPRが投げられそう!!!

@knokmki612
Copy link
Member

ふりかえりました!流れがわかりやすい良い作業メモだと思いました!

  1. installationを書く
  2. テストのやり方を聞くか書く
  3. リファクタリングをやる

とフィードバックすることが出ていて順調だと思いました!

@knokmki612
Copy link
Member

OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - ククログ(2019-07-12) https://www.clear-code.com/blog/2019/7/12.html これですね!

@kayawari
Copy link
Contributor Author

@knokmki612 ありがとうございます!頂いたリンクも参考にしてみます!

@kayawari
Copy link
Contributor Author

これから、

installationを書く

をやる!

@kayawari
Copy link
Contributor Author

フィードバック用のテンプレートなどが見当たらなかったので、過去にprを出した人の内容を参考にしてみた。

  • 結構簡素に書いてる
  • issueに詳細を書いて、prにはそのリンクだけ貼り付けている人もいた。
  • たまに詳細を書いてる人もいる感じ

という感じで、特に決まりは無さそう。

一旦、issueを立てて、日本語文章作成 → 英語化で進めようと思う。

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

PRで追加したい内容
  • installの仕方
  • irbでの操作方法
  • fluentdのインストールと起動方法

それぞれ別PRがわかりやすそう。

📝 fluentdのインストール方法はパソコンの環境によっても色々違いそう

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

gemでテンプレを作れるから、文章作るならそれを使うの良さそう!とアドバイスしてもらいました!

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

[takayuki]$ bundle gem hoge
Creating gem 'hoge'...
MIT License enabled in config
Code of conduct enabled in config
      create  hoge/Gemfile
      create  hoge/lib/hoge.rb
      create  hoge/lib/hoge/version.rb
      create  hoge/hoge.gemspec
      create  hoge/Rakefile
      create  hoge/README.md
      create  hoge/bin/console
      create  hoge/bin/setup
      create  hoge/.gitignore
      create  hoge/.travis.yml
      create  hoge/.rspec
      create  hoge/spec/spec_helper.rb
      create  hoge/spec/hoge_spec.rb
      create  hoge/LICENSE.txt
      create  hoge/CODE_OF_CONDUCT.md
Initializing git repo in /Users/takayuki/hoge
Gem 'hoge' was successfully created. For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html
~

これで作られたREADMEを使ってみることにしました!

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

下書き


Installation

Add this line to your application's Gemfile:

gem 'fluent-logger'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install fluent-logger

@kayawari
Copy link
Contributor Author

📝 リポジトリ名を見た時に fluent-logger-rubyと書かれていたので、インストール時に gem install fluent-logger-rubyとしたが、実際はgem install fluent-loggerだった。

@kayawari
Copy link
Contributor Author

🤔 もしかしたら、bundleだけだと2.x系のbundlerじゃインストールが始まらないかも

@nico-hn
Copy link
Contributor

nico-hn commented Jul 27, 2019

Bundler2系の注意点です。

http://koic.hatenablog.com/entry/bundle-command-of-bundler2

@kayawari
Copy link
Contributor Author

⬆️ で教えてもらった懸念もあるので、bundlebundle installに書き換えたほうが良さそう!ということになった

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

#1220 (comment) の内容を英語化!


Since I saw the repository name is fluent-logger-ruby, I tried to install this library.

gem install fluent-logger-ruby

But I can't install it.

Actually, I can install as follows.

gem install fluent-logger

@kayawari
Copy link
Contributor Author

英語が正しいかを心配しすぎるよりも、エイ!と投げちゃう気持ちも大事 📝

@kayawari
Copy link
Contributor Author

初PR出来ました!
fluent/fluent-logger-ruby#82

📝 forkして、本家のリポジトリにPRを送るやり方をとりました

@kayawari
Copy link
Contributor Author

でも、PRの下のほうを見ると...
スクリーンショット 2019-07-27 14 42 54

@kayawari
Copy link
Contributor Author

📝 https://github.com/fluent/fluent-logger-ruby/pull/82/checks?check_run_id=178708569

@kayawari
Copy link
Contributor Author

次はこれに関する

irbでの操作方法

をやってみる

@kayawari
Copy link
Contributor Author

https://github.com/fluent/fluent-logger-ruby/blob/master/bin/fluent-post

bin/配下があるので、それで動かせるかも。

@kayawari
Copy link
Contributor Author

[takayuki]$ bin/fluent-post                                                                [add-instruction-for-installation]
Usage: fluent-post -t tag.foo.bar -v key1=value1 -v key2=value2
    -t [tag (default nil)]
    -p [port (default 24224)]
    -h [host (default localhost)]
    -v [key=value]
~/src/github.com/kayawari/fluent-logger-ruby
[takayuki]$ bin/fluent-post -t tag.foo.bar -v key1=value1 -v key2=value2                   [add-instruction-for-installation]
post successed. #=> {"key1"=>"value1", "key2"=>"value2"}

bin/fluent-postを動かしてみた。
動くけど、自分がREADMEを見てirbで動かしたやり方とは少し違う...かも? 🤔

irbで動かすやり方をPR送ってもいいかも知れない

@kayawari
Copy link
Contributor Author

📝 bin/fluent-postのコードを眺めていると、実際には READMEに書いてある内容と殆ど同じことをやっていた。
https://github.com/kayawari/fluent-logger-ruby/blob/master/lib/fluent/logger/fluent_logger/cui.rb

fluentdが停止していると、bin/fluent-postはエラーになる。つまり、fluentdが起動している前提で、このコマンドは叩けるということ。ちなみに、その全体はREADMEなどにも書かれていなかった。

ココまで来て、bin/fluent-postがすでに用意されているので、irbで操作する方法をPRに出すよりも、上記の前提を補足するために、fluetdのインストール方法をリンクで貼ってあげると親切かもという話をした!

@kayawari
Copy link
Contributor Author

kayawari commented Jul 27, 2019

📝 このREADMEは誰のための説明なのか?

このREADMEの説明は User 向けに見える。
fluentdが立ち上がってる前提で使う人もいるかも。

このコマンドを使う時に、fluentdを立ち上げて、実際に利用する人はどんな人かな??
多分、エンジニアだと思う。
となると、fluentd立ち上げの説明とかは Developers Guideみたいなセクションにおいておくといいかも知れない。


ちなみにREADMEのテンプレにDevelopmentがあるので、そのセクションに書くのがいいかも知れない

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

@kayawari
Copy link
Contributor Author

📝 振り返りのアドバイス

  • RAEDMEのPRもいいけど、もしかしたら「fluentdが立ち上がっていないよ!」という旨を伝えるエラー出力コードをcui commandに反映するのもいいかも
  • fluentd-logger-ruby-rubyっていうのは、他の言語があるからそれを示唆した接頭尾かも。
  • 更新が古いコードは、他の部分との乖離を気にしたほうが良さそう。
  • あと、そもそもエラーの出力が出るかどうか?などは、テストコードを確認してみると色々わかるかも。

@swamp09
Copy link
Member

swamp09 commented Jul 27, 2019

一緒に2回目のふりかえりをしました!

@oss-gate-issue-cleaner
Copy link

おつかれさまでした!

後日引き続きワークショップがある場合

後日のワークショップで再開する際に、issueタイトルの日付を更新してreopenしてください!

ワークショップ終了後に続きがしたい場合

issueはクローズしますが、その後も作業を続けていただいて大丈夫です!

是非このissueを活用なさってください。

今後のイベントの案内

現在以下のイベントの開催を予定しています。

参加をお待ちしてます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants