gpt4 book ai didi

ruby - 陷入 rvm hell 试图让一个简单的 rspec 运行

转载 作者:太空宇宙 更新时间:2023-11-03 17:26:21 28 4
gpt4 key购买 nike

来自终端的 Ruby 设置

 % ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
=> ~/ruby/grounded/test
% where ruby
/home/mike/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
/home/mike/.rvm/bin/ruby
/usr/local/bin/ruby
/usr/bin/ruby
=> ~/ruby/grounded/Person/test
% which ruby
/home/mike/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
% rvm current
ruby-1.9.2-p180

目录结构

 % tree
.
├── bowling.rb
└── bowling_spec.rb

文件内容

保龄球.rb

class Bowling

end

bowling_spec.rb

require 'rubygems'
require 'rspec'
require 'bowling'
describe Bowling, "#score" do
it "returns 0 for all gutter game" do
bowling = Bowling.new
20.times { bowling.hit(0) }
bowling.score.should eq(0)
end
end

% ruby bowling_spec.rb

/home/mike/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- bowling (LoadError)
from /home/mike/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from bowling_spec.rb:3:in `<main>'

问题

  • 为什么在 bowling.rbbowling_spec.rb 时出现 LoadError在同一个文件夹中?
  • 在错误中 .../site_ruby/1.9.1/... 当我运行 ruby​​ 1.9.2 那么为什么 1.9.1 甚至出现?
  • 我如何克服这个障碍并开始享受 ruby​​ 带来的乐趣。

最佳答案

当需要文件时,文件必须位于名为 $LOAD_PATH 的目录列表中。当前目录曾经在此列表中,但从 1.9.2 开始,出于安全原因已将其删除。

你有四个选项(按照我认为它们的好坏顺序排列)

1 将您的目录结构更改为如下所示

.
|-- lib
| `-- bowling.rb
`-- spec
`-- bowling_spec.rb

然后作为 rspec spec 而不是 ruby bowling_spec.rb 运行这是可行的,因为 RSpec 会看到 lib 在您的当前目录中,然后为您将其添加到 $LOAD_PATH。

如果这样做,您也不必 require 'rspec'

2 使用 ruby -I 运行。 bowling_spec.rb

这会将当前目录添加到 $LOAD_PATH

3 使用 require_relative 'bowling' 而不是 require 'bowling'

这将查找相对于当前正在运行的文件 (bowling_spec.rb) 的 bowling.rb 文件

4 使用 require('../bowling', __FILE__) 而不是 require 'bowling'

这个和上面的基本一样

其他问题:

问:当 bowling.rb 和 bowling_spec.rb 在同一文件夹中时,为什么我会收到 LoadError?

答:因为当前目录(您运行脚本的目录,而不是文件所在的目录)不在 $LOAD_PATH 中。

问: 在错误中到底是什么.../site_ruby/1.9.1/... 当我运行 ruby​​ 1.9.2 那么为什么 1.9.1 甚至会出现?

答:嗯。不确定我是否记得准确,但是 IIRC,它们非常相似以至于界面没有改变,所以从系统的角度来看它们可以与 1.9.1 兼容。

问:我如何克服这个障碍并开始享受 ruby​​ 带来的乐趣。

答:我想这要视情况而定。如果问题是您希望能够运行 CWD 中的文件,那么您可以将环境变量 RUBYLIB 添加到 . 到您的 .bash_profile(或您系统上的任何等效项)这将告诉 Ruby 在当前目录中查找文件。但是,这很容易出现错误(并且可能导致无意中执行 Ruby 文件,这是一种安全风险)。如果您只是指“我如何开始学习”或什么是有趣的项目?然后查看我的一个项目,Ruby Kickstart在六节课中,您将了解 Ruby 的很大一部分,并在结束时让您编写和部署一个简单的 Web 应用程序。

关于ruby - 陷入 rvm hell 试图让一个简单的 rspec 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798219/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com