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-3.1.0-preview1のMastodonはわけがわかめちゃん

$ bundle exec rails db:setup
:
rails aborted!
Psych::BadAlias: Unknown alias: defaults
/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.1.0/gems/rails-settings-cached-0.6.6/lib/rails-settings/default.rb:41:in `initialize'
/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.1.0/gems/rails-settings-cached-0.6.6/lib/rails-settings/default.rb:34:in `new'
/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.1.0/gems/rails-settings-cached-0.6.6/lib/rails-settings/default.rb:34:in `instance'
/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.1.0/gems/rails-settings-cached-0.6.6/lib/rails-settings/base.rb:19:in `cache_prefix_by_startup'
/home/zunda/c/src/github.com/zunda/mastodon/vendor/bundle/ruby/3.1.0/gems/rails-settings-cached-0.6.6/lib/rails-settings/base.rb:27:in `cache_key'
/home/zunda/c/src/github.com/zunda/mastodon/app/models/setting.rb:26:in `[]'
:

yamlのパーサらしい (そこから)

$ ruby -v -rpsych -e 'p Psych.safe_load(File.read("config/database.yml"))'
ruby 3.1.0preview1 (2021-11-09 master 5a3b2e6141) [x86_64-linux]
/home/zunda/.rbenv/versions/3.1.0-preview1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
from /home/zunda/.rbenv/versions/3.1.0-preview1/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'

うむ

$ ruby -v -rpsych -e 'p Psych.safe_load(File.read("config/database.yml"))'
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
/home/zunda/.rbenv/versions/3.0.2/lib/ruby/3.0.0/psych/visitors/to_ruby.rb:428:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
from /home/zunda/.rbenv/versions/3.0.2/lib/ruby/3.0.0/psych/visitors/visitor.rb:30:in `visit'

あれ?

$ ruby -v -rpsych -ryaml -rerb -e 'p YAML.load(ERB.new(File.read("config/database.yml")).result)'
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
{"default"=>{"adapter"=>"postgresql", "pool"=>5, "timeout"=>5000, "encoding"=>"unicode", "sslmode"=>"prefer"}, "development"=>{"adapter"=>"postgresql", "pool"=>5, "timeout"=>5000, "encoding"=>"unicode", "sslmode"=>"prefer", "database"=>"mastodon_development", "username"=>nil, "password"=>nil, "host"=>nil, "port"=>nil}, "test"=>{"adapter"=>"postgresql", "pool"=>5, "timeout"=>5000, "encoding"=>"unicode", "sslmode"=>"prefer", "database"=>"mastodon_test", "username"=>nil, "password"=>nil, "host"=>nil, "port"=>nil}, "production"=>{"adapter"=>"postgresql", "pool"=>5, "timeout"=>5000, "encoding"=>"unicode", "sslmode"=>"prefer", "database"=>"mastodon_production", "username"=>"mastodon", "password"=>nil, "host"=>"localhost", "port"=>5432, "prepared_statements"=>true}}

こうか

$ ruby -v -rpsych -ryaml -rerb -e 'p YAML.load(ERB.new(File.read("config/database.yml")).result)'
ruby 3.1.0preview1 (2021-11-09 master 5a3b2e6141) [x86_64-linux]
/home/zunda/.rbenv/versions/3.1.0-preview1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
from /home/zunda/.rbenv/versions/3.1.0-preview1/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'

ういうい

ruby-3.1.1-preview1でpsychのv4.0.0タグをrequireするとエラーになる。v3.3.2タグなら読める。

v4.0.0でもYAML.loadではなくYAML.unsafe_loadなら読める。なるほど。

Psychにプルリクチャンスと思ってたのにRailsになりそうな時の顔してる

zunda

$ diff -ur rails-settings{.orig,}
diff -ur rails-settings.orig/default.rb rails-settings/default.rb
--- rails-settings.orig/default.rb 2021-11-19 16:54:23.296083983 -1000
+++ rails-settings/default.rb 2021-11-19 20:21:00.387681762 -1000
@@ -38,7 +38,7 @@

def initialize
content = open(self.class.source_path).read
- hash = content.empty? ? {} : YAML.load(ERB.new(content).result).to_hash
+ hash = content.empty? ? {} : YAML.unsafe_load(ERB.new(content).result).to_hash
hash = hash[Rails.env] || {}
replace hash
end
diff -ur rails-settings.orig/settings.rb rails-settings/settings.rb
--- rails-settings.orig/settings.rb 2021-11-19 16:54:23.296083983 -1000
+++ rails-settings/settings.rb 2021-11-19 20:21:20.607949436 -1000
@@ -8,7 +8,7 @@

# get the value field, YAML decoded
def value
- YAML.load(self[:value]) if self[:value].present?
+ YAML.unsafe_load(self[:value]) if self[:value].present?
end

# set the value field, YAML encoded

でなおったっぽ

$ bundle exec rspec
warning: parser/current is loading parser/ruby31, which recognizes
warning: 3.1.0-dev-compliant syntax, but you are running 3.1.0.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

Randomized with seed 29672
3252/3252 |============================================== 100 ===============================================>| Time: 00:06:38
:
Finished in 6 minutes 38 seconds (files took 8.78 seconds to load)
3252 examples, 0 failures, 24 pending

Randomized with seed 29672
Coverage report generated for RSpec to /home/zunda/c/src/github.com/zunda/mastodon/coverage. 14839 / 22530 LOC (65.86%) covered.

:tada:

GitHubGitHub - whitequark/parser: A Ruby parser.A Ruby parser. Contribute to whitequark/parser development by creating an account on GitHub.