Techioz Blog

Ruby Glimmer、Glimmer サンプルを実行するとスタックトレースが生成される

概要

私はここで詳しく説明されている RubyConf ワークショップのプレゼンテーションに従っています: https://github.com/AndyObtiva/how-to-build-desktop-applications-in-ruby ですが、すでに 2 番目のコマンドで行き詰まっています。 gem install glimmer-dsl-libui を発行すると、正常に実行され glimmer (2.7.6) と glimmer-dsl-libui (0.11.8) がインストールされましたが、コマンド glimmer の例では次の例外が発生します。

Traceback (most recent call last):
    27: from /Users/marion/.rvm/gems/ruby-2.7.6/bin/glimmer:23:in `<main>'
    26: from /Users/marion/.rvm/gems/ruby-2.7.6/bin/glimmer:23:in `load'
    25: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/bin/glimmer:24:in `<top (required)>'
    24: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/bin/glimmer:24:in `require_relative'
    23: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer-dsl-libui.rb:39:in `<top (required)>'
    22: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    21: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    20: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/dsl/libui/dsl.rb:23:in `<top (required)>'
    19: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/dsl/libui/dsl.rb:23:in `each'
    18: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/dsl/libui/dsl.rb:23:in `block in <top (required)>'
    17: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    16: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    15: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/dsl/libui/tab_item_expression.rb:23:in `<top (required)>'
    14: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    13: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    12: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/tab_item_proxy.rb:22:in `<top (required)>'
    11: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    10: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
     9: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy.rb:425:in `<top (required)>'
     8: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy.rb:425:in `each'
     7: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy.rb:425:in `block in <top (required)>'
     6: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
     5: from /Users/marion/.rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
     4: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/text_proxy.rb:27:in `<top (required)>'
     3: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/text_proxy.rb:28:in `<module:Glimmer>'
     2: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/text_proxy.rb:29:in `<module:LibUI>'
     1: from /Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/text_proxy.rb:33:in `<class:ControlProxy>'
/Users/marion/.rvm/gems/ruby-2.7.6/gems/glimmer-dsl-libui-0.11.8/lib/glimmer/libui/control_proxy/text_proxy.rb:35:in `<class:TextProxy>': uninitialized constant Glimmer::LibUI::ControlProxy::TextProxy::PerfectShaped (NameError)

何が間違っていたのでしょうか?

解決策

Glimmer の説明の状態に注意してください

Ruby 2.6.1 で問題が発生しましたが、Ruby 3.3.0 では次のようにするだけで正常に動作します。

gem install glimmer-dsl-libui

したがって、Ruby 3.x を試す必要があるかもしれません。