mastodon.zunda.ninja is one of the many independent Mastodon servers you can use to participate in the fediverse.
Zundon is a single user instance as home of @zundan as well as a test bed for changes of the code.

Administered by:

Server stats:

1
active users

Rubyのメソッド定義のdefの前でp selfすると特異ではないクラスなのでこのメソッドはインスタンスメソッドとして定義されてると思うんだけどあとで呼ばれてる時にはクラスをレシーバにしてsendされててクラスメソッドに化けてるんだけどどこでどうなってるんだろうぐぬぬ

まって。メソッドの定義を他のメソッドの実行中に定義してるw

びっくりして日本語がおかしくなったw

何をしてるかと書くとMastodonのmainのテストが1個だけruby-3.2.0-rc1で落ちるんだけど3.1.3では落ちないんだよね…。

Mastodonのmainを3.2.0対応にする:

$ patch -p1 <<_END
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
# frozen_string_literal: true

source 'https:// rubygems.org'
-ruby '>= 2.7.0', '< 3.1.0'
+ruby '>= 2.7.0', '< 3.3.0'

gem 'pkg-config', '~> 1.5'
gem 'rexml', '~> 3.2'
@@ -12,6 +12,8 @@ gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.4'

+gem 'mail', git: 'https:// github.com/Shopify/mail.git', branch: 'net-smtp-dependency'
+
gem 'hamlit-rails', '~> 0.2'
gem 'pg', '~> 1.4'
gem 'makara', '~> 0.5'
@@ -12,6 +12,8 @@ gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.4'

+gem 'mail', git: 'https:// github.com/Shopify/mail.git', branch: 'net-smtp-dependency'
+
gem 'hamlit-rails', '~> 0.2'
gem 'pg', '~> 1.4'
gem 'makara', '~> 0.5'
$ rbenv local 3.2.0-rc1; rm -f Gemfile.lock; bundle install

テストが落ちる

$ bundle exec rspec ./spec/controllers/api/v1/emails/confirmations_controller_spec.rb:41
:
ArgumentError:
wrong number of arguments (given 2, expected 1)
# ./app/mailers/user_mailer.rb:51:in `email_changed'
# ./app/models/user.rb:444:in `render_and_send_devise_message'
# ./app/models/user.rb:430:in `block in send_pending_devise_notifications'
:

zunda

この変更はブロックを呼んだ時だけ影響するはずなのにMastodonのコードだけ見てもブロックを呼んでなくっぽく見えるから別の何かかと思って呼ばれる側で

puts caller.join("\n")

したらちゃんと

/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.2.0+3/gems/actionpack-6.1.7/lib/abstract_controller/callbacks.rb:42:in `block in process_action'

なら何やらたっぷり呼んでたね