【发布时间】:2011-05-22 15:51:51
【问题描述】:
我正在尝试为 KDE 编写一个 Ruby plasmoid。我只需要使用一颗红宝石。每当我写require 'dbus' 时,它都会抛出一个错误:
code/main.rb:6:in 'require': no such file to load -- dbus (LoadError)
code/main.rb:6:in '<module:TestApp>'
code/main.rb:5:in '<top (required)>'
/usr/share/apps/plasma_scriptengine_ruby/applet.rb:177:in 'load'
/usr/share/apps/plasma_scriptengine_ruby/applet.rb:177:in 'init'
/usr/share/apps/plasma_scriptengine_ruby/applet.rb:201:in 'constraintsEvent': undefined method 'constraintsEvent' for nil:NilClass (NoMethodError)
/usr/share/apps/plasma_scriptengine_ruby/applet.rb:201:in 'constraintsEvent': undefined method 'constraintsEvent' for nil:NilClass (NoMethodError)
实际上,正常的“ruby main.rb”运行良好(关于“require”部分),但使用“plasmoidviewer”测试 plasmoid 失败。请注意,来自标准 Ruby 安装的常规 gem 运行良好,即 require 'Qt4' 或 require 'yaml' 可以完美加载。我在 Linux 下使用 Ruby 1.9.2p180。
09:40 PM - 更新:Richard Dale,QtRuby 开发人员之一,几分钟前刚刚解决了这个问题。下一个 KDE 版本将有 QtRuby 的补丁版本。
【问题讨论】:
-
所以你的脚本在直接调用时可以工作,但不是来自你的测试?您是如何从测试文件中加载文件的?
-
是的,当直接调用时,一切正常,关于“要求”。一切都按原样加载。但是,我不明白你的第二个问题。我安装了一个名为“ruby-dbus”的gem,它的调用方式如下:
require 'dbus'。它在任何 ruby 脚本中都可以完美调用,但在 main.rb 中却没有。不管我需要什么 gem(默认库除外),它都会引发 LoadError。我使用 plasmoidviewer 实用程序测试我的代码,该实用程序在 main.rb 文件中有自己的表示。每个用 Ruby 编写的 plasmoid 都应该需要“plasma_applet”,这将是您代码的第一行。
标签: ruby kde-plasma plasmoid