我正在使用Ruby进行学习游戏编程,我只想执行示例代码。
我使用示例代码得到以下错误。
❯ ruby WhackARuby/WhackARuby_1/whack_a_ruby.rb code
/Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosu-0.10.4/lib/gosu/patches.rb:40:in `initialize': Cannot open file ruby.png (RuntimeError)
from /Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosuu0.10.4/lib/gosu/patches.rb:40:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `<main>'示例代码如下所示:
require 'gosu'
class WhackARuby < Gosu::Window
def initialize
super(800, 600)
self.caption = 'Whack the Ruby!'
@image = Gosu::Image.new('ruby.png')
end
end对这里会发生什么有什么想法吗?例如,我尝试将违规行更改为@image = Gosu::Image.new('./ruby.png'),但这并没有帮助。
我怀疑这就是原因,但我的红宝石版本是ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
编辑包括文件路径:

发布于 2015-12-18 19:42:38
问题总是存在的,因为文件并不存在于您认为的位置。
引用文件的方法有很多。文件文档有expand_path、realpath、absolute_path,所有这些都使得基于绝对路径或相对路径并相对于当前运行的文件、应用程序或特定目录引用文件变得非常容易。他们的例子中包括了如何使用它们。
重要的是确保您知道代码认为它是当前工作目录的目录和/或文件所在的位置。第一个在使用相对路径时很重要,第二个是如果您不想关心当前路径,并且知道文件总是存在于某个位置的话。
此外,当文件的名称与您认为的不同,或者甚至不存在时,也会出现这种情况。
发布于 2021-04-09 09:26:51
在我的例子中,解决方案是使用更显式的文件路径:
Gosu::Image.new("#{__dir__}/ruby.png")https://stackoverflow.com/questions/34362487
复制相似问题