1

我在我的英特尔 iMac 上运行默认的 Ruby 安装(ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10])。我更新了 RubyGems 并安装了 wxruby gem。我正在尝试运行以下示例程序:

#!/usr/bin/ruby
require "rubygems"
require "wx"


class MyApp < Wx::App
    def on_init
        @frame = Wx::Frame.new(nil, -1, "The Bare Minimum")
        @frame.show()
    end
end

app = MyApp.new()
app.main_loop()

我收到以下错误:

==> wxruby-test.rb
/Library/Ruby/Gems/1.8/gems/wxruby-1.9.3-universal-darwin/lib/wxruby2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/wxruby-1.9.3-universal-darwin/lib/wxruby2.bundle, 9): no suitable image found.  Did find: (LoadError)
    /Library/Ruby/Gems/1.8/gems/wxruby-1.9.3-universal-darwin/lib/wxruby2.bundle: no matching architecture in universal wrapper - /Library/Ruby/Gems/1.8/gems/wxruby-1.9.3-universal-darwin/lib/wxruby2.bundle
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `require'
    from /Library/Ruby/Gems/1.8/gems/wxruby-1.9.3-universal-darwin/lib/wx.rb:12
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:in `require'
    from wxruby-test.rb:3

如果我注释掉 require ruby​​gems 语句,我会收到以下错误:

==> wxruby-test.rb
wxruby-test.rb:3:in `require': no such file to load -- wx (LoadError)
    from wxruby-test.rb:3

我是 Mac 上的 Ruby 新手,我确信这是一些可能与路径有关的基本错误,但大多数关于环境变量的解释都是针对有经验的用户。如果您需要其他命令的更多输出,请告诉我。我正在从 tcsh shell 运行 Ruby。我确定我在做一些基本的错误,但我只是难住了。

4

2 回答 2

0

如果您正在运行 Ruby 1.8.7,您应该保留以下require语句:

require "rubygems"

Ruby 1.8 默认不知道 gems,所以我们必须告诉 Ruby 需要 gems 加载器。Ruby 1.9+ 捆绑了它,所以我们不再需要这样做。

这与 Mac(或 Windows 或 Linux)操作系统无关,它与 Ruby 的默认加载路径有关。

而且,作为安全提示,不要乱用 Apple 安装的 Ruby。他们安装它供自己使用,并用于一些播客创建工具。而且,在未来的某个时间点,他们可能希望在系统中添加一些东西,以利用 Ruby(或 Python 或 Perl)的预期配置。更改(或更糟糕的是,删除它)可能会让您感到困惑。所以,我建议你不要管它,使用 rbenv 或 RVM 在沙箱中安装 Ruby,在那里你可以安全地戳、刺和弄乱它。

于 2012-11-04T20:05:15.880 回答
0

什么版本的 OS X?如果它是狮子之一,那么你就不走运了。wxwidgets 库(以及基于它的东西,比如 wxruby)仍然只有 32 位并且基于 Carbon。Lions 仅支持 64 位,并且不推荐使用 Carbon。

于 2012-11-04T20:25:15.537 回答