ruby gems文件夹是特定的吗?

xbp102n0  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(72)

我有一个旧的RubyonRails项目,我把它当作一种爱好,但我从来没有实现过Rspec测试。
现在我想这样做,所以我正在阅读一本很好的书《用Rspec 3进行有效测试》。我假设Rspec书和rspec gem中使用的技术适用于rspec-rails gem,因为我从www.example.com获得了rspec书rspec.info,它只提供rspec-rails及其依赖项的文档。我假设rspec-rails自动创建RoR项目中的子文件夹和文件等。我将使用哪一个来实现测试,目前我还不确定。
无论如何,我显然已经将rspec安装在我的旧爱好PROJECT目录中(项目目录中的rspec-v)

3.5.4

字符串
rspec-rails也是Gemfile项目中的一个gem(一个过时的版本,但在写这本书的时候是最新的),它也是和rspec沿着安装的,根据gem list --local,但我也从旧项目目录中得到了rspec-rails -v的“命令未找到”。
因此,我创建了一个名为rspecest的新文件夹,我将在其中实现书中的示例和说明。但是,按照第1章中的说明:

$ gem install rspec -v 3.6.0
Successfully installed rspec-support-3.6.0
Successfully installed rspec-core-3.6.0
Successfully installed diff-lcs-1.3
Successfully installed rspec-expectations-3.6.0
Successfully installed rspec-mocks-3.6.0
Successfully installed rspec-3.6.0
6 gems installed


我尝试在新的rspectest文件夹中安装rspec,但出现错误:

ERROR:  Could not find a valid gem 'rspec' (= 3.5.4) in any repository
ERROR:  Possible alternatives: r_spec


我问的原因是因为在第7页上,它要求从项目目录运行命令rspec,以查看示例的结果,我得到:

Command 'rspec' not found, but can be installed with:

sudo apt install ruby-rspec-core


所以我必须假设这个命令只允许从这个特定的新rspec测试文件夹访问gem,如果是从目录(?)):

sudo apt install ruby-rspec-core


而且不会乱用不同项目文件夹的gems,我假设这是gemfile等的重点,以防本地安装了不同版本的gems。
……我想我已经猜到了,对不起。我会删除它,除非上面的命令不起作用。编辑:这些问题的未决答案:
1.就gems和它们的可访问性而言,所有的文件夹都是相互独立的吗?
1.我是否需要bundle来将gem安装到特定的文件夹中?我认为没有,因为gem install是一件事,需要设置一个Rails项目,我可以这样做,但它实际上是书中的第一个例子。
1.如果我使用sudo apt在一个随机文件夹中安装ruby-rspec-core(它安装了另一个版本或其他奇怪的东西),这会影响我的旧项目文件夹吗?
我也假设没有,但它会很好地澄清为什么书中的例子不工作了 bat 。我不喜欢在开始实验时不得不重新安装repo或者不得不擦除驱动器,尤其是当它只在第4页时

ctzwtxfj

ctzwtxfj1#

所以你的问题有点令人困惑,但我只是给予你一个关于如何在你的机器上管理gems的一般概述。
通常在一个rails项目中有一个Gemfile,它定义了你的ruby版本以及你的项目所需要的gem。有时候它们也会指定特定的版本'gem 'aws-ses-v4', '~> 0.8.1'
另外,使用rvm或rbenv(我的首选)来处理ruby管理也是一个很好的实践。这对于计算机上有多个版本的ruby很有用。对于rbenv,你将有一个.ruby-version文件,你可以用它来设置ruby版本,任何时候你在那个项目目录中运行一个命令,rbenv都会检查这个文件,以确定它使用的是哪个ruby版本,以及它应该在哪里找到gem等。
现在如果你没有使用它,你需要手动设置你在终端中使用的ruby版本,我怀疑你有多个ruby版本,其中一个安装了rspec,而另一个没有。
除了bundler之外,你永远不需要手动运行gem install,然后使用Gemfile和bundle install来安装其他所有东西。
如果你手动运行gem install命令,它会将gem放到你当前使用的ruby版本的本地目录中。这将取决于您使用的计算机类型。对于我使用rbenv它的~/.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/gems,但不太确定它默认在哪里。

相关问题