【问题标题】:Ruby not finding rubygems or wx modulesRuby 找不到 ruby​​gems 或 wx 模块
【发布时间】:2012-10-24 16:47:20
【问题描述】:

我正在英特尔 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。我确定我做错了什么,但我只是难住了。

【问题讨论】:

    标签: ruby rubygems require wxruby


    【解决方案1】:

    如果您运行的是 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 安装在沙箱中,在那里你可以安全地戳、刺和弄乱它。

    【讨论】:

    • OP 正在使用 'require "rubygems"' 并且它正在寻找 gem,但未能加载需求。仔细阅读问题。
    • OP 发生了几件事并说:“如果我注释掉 require 'rubygems'...”。这就是我要解决的问题,以及使用系统的 Ruby。为什么 WX 不加载是问题中三个问题中的一个单独问题。
    【解决方案2】:

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

    【讨论】:

    • 我正在运行 Snow Leopard - 10.6.8
    • 顺便说一句:当我使用 Macruby 时,我遇到了同样的问题。
    • 另外,搜索我的硬盘显示没有文件名:rubygems、rubygems.rb、wx 或 wx.rb
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多