这是$ gem env
的输出:
Michels-MacBook-Pro:~ michelfrechette$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.5.1
- RUBY VERSION: 2.2.3 (2015-08-18 patchlevel 173) [x86_64-darwin15]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.2.0
- USER INSTALLATION DIRECTORY: /Users/michelfrechette/.gem/ruby/2.2.0
- RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /Users/michelfrechette/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.2.3/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-15
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.2.0
- /Users/michelfrechette/.gem/ruby/2.2.0
- /usr/local/Cellar/ruby/2.2.3/lib/ruby/gems/2.2.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Library/Frameworks/Python.framework/Versions/3.5/bin
- /usr/local/bin
- /Users/michelfrechette/.rbenv/shims
- /Users/michelfrechette/.rbenv/bin
- /usr/local/bin
- /usr/local/sbin
- /usr/local/mysql/bin
- /usr/bin
- /usr/local/heroku/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /Users/michelfrechette/.RVM/bin
- /Applications/Postgres.app/Contents/Versions/9.4/bin
Michels-MacBook-Pro:~ michelfrechette$
我正在使用$ ruby game.rb
运行脚本,其中包含:
require 'rubygame'
class Game
end
我使用rbenv来管理我的Ruby版本,它目前设置为2.3.0-dev;曾几何时我在MacBook-Pro上安装了RVM。
当我运行brew update
或gem update
等命令时,一切似乎都没问题。
我尝试过使用ruby 2.2.0,但它并没有什么区别。
当我运行ruby -v
时,我得到2.3.0p173
。
这是因为我曾经使用RVM作为我的版本管理器。
这是我运行文件时应该看到的输出吗?
Last login: Tue Jan 26 16:27:35 on ttys005
Michels-MacBook-Pro:~ michelfrechette$ ruby game.rb
/usr/local/lib/ruby/gems/2.2.0/gems/nice-ffi-0.4/lib/nice-ffi/library.rb:98:in `load_library': Could not load SDL. (LoadError)
from /usr/local/lib/ruby/gems/2.2.0/gems/ruby-sdl-ffi-0.4/lib/ruby-sdl-ffi/sdl.rb:51:in `<module:SDL>'
from /usr/local/lib/ruby/gems/2.2.0/gems/ruby-sdl-ffi-0.4/lib/ruby-sdl-ffi/sdl.rb:34:in `<top (required)>'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:67:in `require'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:67:in `require'
from /usr/local/lib/ruby/gems/2.2.0/gems/rubygame-2.6.4/lib/rubygame/main.rb:22:in `<top (required)>'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:119:in `require'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:119:in `require'
from /usr/local/lib/ruby/gems/2.2.0/gems/rubygame-2.6.4/lib/rubygame.rb:44:in `block in <top (required)>'
from /usr/local/lib/ruby/gems/2.2.0/gems/rubygame-2.6.4/lib/rubygame.rb:43:in `each'
from /usr/local/lib/ruby/gems/2.2.0/gems/rubygame-2.6.4/lib/rubygame.rb:43:in `<top (required)>'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:126:in `require'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:126:in `rescue in require'
from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in `require'
from game.rb:2:in `<main>'
Michels-MacBook-Pro:~ michelfrechette$
我该如何解决这个问题?
答案 0 :(得分:1)
我认为你必须学习如何使用rbenv
:Choosing the Ruby Version
选择Ruby版本
执行填充程序时,rbenv会确定要使用的Ruby版本 请按以下顺序从以下来源阅读:
RBENV_VERSION环境变量(如果已指定)。你可以使用 rbenv shell命令在当前设置此环境变量 shell会话。
通过搜索目录找到的第一个.ruby-version文件 您正在执行的脚本及其每个父目录,直到 到达文件系统的根目录。
通过搜索当前工作找到的第一个.ruby-version文件 目录及其每个父目录,直到到达根目录 你的文件系统。您可以修改.ruby-version文件 使用rbenv local命令的当前工作目录。
- 醇>
全局〜/ .rbenv / version文件。您可以使用以下命令修改此文件 rbenv全局命令。如果不存在全局版本文件,则为rbenv 假设你想使用&#34;系统&#34;红宝石即。无论什么版本 如果rbenv不在您的路径中,请运行。
您可以使用rbenv
命令显示选项并查询当前环境的状态。检查一下,这是我自己解释的。
答案 1 :(得分:1)
查看searchview.jsp
显示的PATH:
web.xml
您有多个问题:
gem env
和 - /Library/Frameworks/Python.framework/Versions/3.5/bin
- /usr/local/bin
- /Users/michelfrechette/.rbenv/shims
- /Users/michelfrechette/.rbenv/bin
- /usr/local/bin
- /usr/local/sbin
- /usr/local/mysql/bin
- /usr/bin
- /usr/local/heroku/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /Users/michelfrechette/.rvm/bin
- /Applications/Postgres.app/Contents/Versions/9.4/bin
/usr/bin
或/usr/local/bin
之前有/usr/local/bin
这将导致.rbenv/shims
或任何与Ruby相关的命令在由rbenv管理的任何Ruby之前在.rbenv/bin
中搜索。并且,如果发现它将被执行,即使您希望rbenv使用其他版本。
您的主目录中有剩余的ruby
,如果在之前的任何目录中都没有发生命中,则可能会搜索到该/usr/local/bin
,这可能会导致代码崩溃,因为它没有指向其他内容已经存在了。
解决此问题:
.rvm/bin
之前和.rbenv
之前在/usr/local/bin
目录中搜索任何/usr/local/bin
程序员必须了解他们的底层操作系统,以免弄乱它。您需要了解shell如何使用〜/ .bashrc和〜/ .bash_profile,它如何搜索PATH并解析可执行文件的名称,以及如何初始化rbenv。
有关rbenv初始化的SO有多个答案,所以搜索。您将找到该信息。
答案 2 :(得分:0)
在你提出的问题中:
require 'rubygems'
require 'rubygame'
我认为你不需要第一个要求,但你的问题是你需要你所处的文件。尝试完全删除它们并运行你的程序,即
# No require statements
class Game
end
您的错误消息显示问题来自第2行,即require 'rubygame'
。