Ruby Glimmer运行示例抛出NameError异常,求解决方法
问题描述
按照RubyConf workshop教程操作,已执行gem install glimmer-dsl-libui成功安装glimmer(2.7.6)和glimmer-dsl-libui(0.11.8),但运行glimmer examples时抛出如下错误:
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)
原因分析
这个错误是由于PerfectShaped库缺失导致的。PerfectShaped是glimmer生态中的依赖组件,当前安装的glimmer(2.7.6)与glimmer-dsl-libui(0.11.8)版本组合存在依赖不兼容问题,导致gem安装过程中没有自动引入所需的PerfectShaped库。
解决方法
升级glimmer到兼容版本:
gem update glimmer升级完成后重新运行
glimmer examples。重新安装兼容版本的gem组合:
gem uninstall glimmer glimmer-dsl-libui gem install glimmer-dsl-libui --version latest让gem自动处理所有依赖的版本匹配。
手动安装PerfectShaped:
gem install perfect_shaped安装完成后再尝试运行命令。
内容的提问来源于stack exchange,提问作者MDickten
相关产品推荐
相关产品推荐

