*1:正確に書くと、転籍で子会社の株式会社スタジオキングに所属していた。
ERROR While executing gem - wrong number of arguments (given 1, expected 0)
ちょっと古いrubygemsで発生する下記のエラーが、普通にコマンドを叩くだけでは回避できなかった。
$ gem install bundler -v 1.16.2 --debug Exception `LoadError' at /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/2.5.0/resolv.rb:170 - LoadError Exception `Errno::EEXIST' at /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/2.5.0/fileutils.rb:232 - File exists @ dir_s_mkdir - /Users/foobar/.gem/specs/api.rubygems.org%443 Exception `ArgumentError' at /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:46 - wrong number of arguments (given 1, expected 0) ERROR: While executing gem ... (ArgumentError) wrong number of arguments (given 1, expected 0) /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:46:in `require' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:108:in `initialize' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:138:in `new' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:138:in `block in install' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:126:in `each' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:126:in `install' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/dependency_installer.rb:389:in `install' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:219:in `install_gem' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:263:in `block in install_gems' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:259:in `each' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:259:in `install_gems' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:171:in `execute' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/command.rb:305:in `invoke_with_build_args' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/command_manager.rb:167:in `process_args' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/command_manager.rb:137:in `run' /Users/foobar/.rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/gem_runner.rb:54:in `run' /Users/foobar/.rbenv/versions/2.5.3/bin/gem:21:in `<main>'
どうやら Kernel
からincludeした gem
メソッドが手元の定義でオーバーライドされているのが原因らしい。
gem update --system
すれば直りそうなんだけど、それを実行するのにも上記の require
を通るため、如何ともし難い。というわけで上記差分のようにlib/rubygems/core_ext/kernel_require.rb
を直接書き換えたところ、 gem update --system
で修正版をインストールすることができた。
--- a/lib/rubygems/core_ext/kernel_require.rb +++ b/lib/rubygems/core_ext/kernel_require.rb @@ -43,7 +43,7 @@ module Kernel if spec = Gem.find_unresolved_default_spec(path) Gem.remove_unresolved_default_spec(spec) - gem(spec.name) + Kernel.send(:gem, spec.name) end
7/31 the HIATUS「Our Secret Spot Tour 2019」Zepp Tokyo
ライブに行っても久しく記録していなかったので、また記録し続けようと思った。
以前まで後半によく置いていた「紺碧の夜に」といった疾走感のある曲が姿を潜めて、ぐっと個性的なものに変わったと感じた。
セットリスト
📝出典
1. Hunger 2. Servant 3. Thirst 4. Unhurt 5. Time Is Running Out 6. Clone 7. Bonfire 8. Sunset Off The Coastline 9. Radio 10. Regrets 11. Chemicals 12. Horse Riding 13. Silence 14. Something Ever After 15. Insomnia 16. Firefly / Life in Technicolor 17. Moonlight アンコール 18. Get Into Action 19. Shimmer
7/26 ELLEGARDEN 「FUJI ROCK FESTIVAL 2019」グリーンステージ
去年のツアーに行けなかったので、今回が活動再開後初参加。2008年のフジロックのグリーンステージで見たのが最後だったので、フジロックで止まっていたものが11年ぶりにまたフジロックで再開したような気持ち。当時とは状況が真逆なのも面白かった。もう聴けないかもなと思うことが多かったから、生きててよかった。
セットリスト
Fire Cracker Space Sonic Missing 高架線 Supernova Pizza Man 風の日 The Autumn Song Middle Of Nowhere 金星 Red Hot ジターバグ No.13 Salamander 虹 Make A Wish スターフィッシュ
ファイルアップローダを手軽に立てられるようにした
端末からスクリーンショットをPCにアップロードしたいことがあって、でもAndroidのBluetoothとかよくわからないし…というときに、手軽に立ち上げられるようなアップローダを作った。
$ curl -sL https://raw.githubusercontent.com/a2ikm/uploader/master/uploader.rb | ruby - [-p PORT] [-u DIRECTORY]
なお、事前にRubyとbundler/inline
が使えるBundler(v1.16以上)を入れておく必要がある。
きっと車輪の再発明だろうけど、bundler/inline
やSinatraでサクッと作れたので面白かった。
追記
git.ioで短縮URLを作成したので、そちらでも起動できるようになった。
$ curl -sL https://git.io/uploaderrb | ruby - [-p PORT] [-u DIRECTORY]
インタラクティブにRipperで構文解析するIRipperというREPLを作った
「この記述はRubyにどういうふうに解析されているんだろう!?」という疑問を逐次解決していくためのREPLとして作りました。
lex
、sexp
、tokenize
というRipperのメソッドを使って、引数で与えられたコードを解析して表示します。
$ iripper iripper> tokenize 1 + 1 ["1", " ", "+", " ", "1"] iripper> sexp 1 + 1 [:program, [[:binary, [:@int, "1", [1, 0]], :+, [:@int, "1", [1, 4]]]]] iripper> lex 1 + 1 [[[1, 0], :on_int, "1", EXPR_END|EXPR_ENDARG], [[1, 1], :on_sp, " ", EXPR_END|EXPR_ENDARG], [[1, 2], :on_op, "+", EXPR_BEG], [[1, 3], :on_sp, " ", EXPR_BEG], [[1, 4], :on_int, "1", EXPR_END|EXPR_ENDARG]]
「いちいちlexと入力するのが面倒くさい」「ワシはtokenizeにしか興味が無いんじゃ」「S式だけを見ていたい」というように、実行したいメソッド(READMEでは「コマンド」と記載していますが)が決まりきっている場合には、起動引数もしくはdefault
コマンドでデフォルトのメソッドを指定するのが便利でしょう。
$ iripper tokenize iripper(tokenize)> 1 + 1 ["1", " ", "+", " ", "1"] iripper(tokenize)> default sexp iripper(sexp)> 1 + 1 [:program, [[:binary, [:@int, "1", [1, 0]], :+, [:@int, "1", [1, 4]]]]] iripper(sexp)> default iripper> tokenize 1 + 1 ["1", " ", "+", " ", "1"]
例の最後のように、default
コマンドに何も与えなければデフォルトのメソッド指定を外します。
履歴やカーソル移動などはできません。気が向いたらReadlineなどで対応します。