下面是我需要做的。

要运行规范,需要安装RSpec。首先,在项目的根目录下运行gem install bundler。然后,运行bundle install。要运行单个spec文件,可以运行如下命令:要一次运行所有规格,请运行bundle exec rspec。

所以,我在终端中输入gem安装捆绑器,并得到错误:

您没有/Library/Ruby/Gems/2.3.0目录的写权限。

这是在atom的项目文件中

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

我的问题是:

似乎终端给我的响应,因为我不应该改变ruby上的任何东西,我需要捆绑安装在原子?谁能告诉我如何使用原子或者在原子中运行任何东西?


当前回答

更新:

我现在有了一个付费脚本,它可以用一个命令为您设置一个合适的Ruby环境! 我还不断更新在Mac上安装Ruby的免费分步指南(比我更新这个答案的频率还高)。

你是对的,macOS不允许你修改Mac自带的Ruby版本。但是,你可以使用一个单独的Ruby版本来安装gems,比如bundler,这不会影响苹果提供的Ruby版本。

使用sudo来安装gems,或者修改系统文件和目录的权限是非常不鼓励的,即使你知道你在做什么。我们能不能别再提这些馊主意了?我写了一篇详细的文章,说明了为什么不应该使用sudo来安装gems。

解决方案包括两个主要步骤:

安装一个独立的Ruby版本,它不会影响Mac自带的Ruby版本。 更新您的PATH,使新的Ruby版本的位置位于PATH中的第一个位置。有些工具会自动为您执行此操作。如果您不熟悉PATH及其工作方式,那么这是您应该学习的基础知识之一,您将理解为什么有时会遇到“命令未找到”错误以及如何修复它们。

在Mac上安装Ruby有几种方法。我推荐的最好的方法,也是我希望在各种安装说明中更普遍的方法,是使用像Ruby on Mac这样的自动脚本,它会为你设置一个合适的Ruby环境。

主要原因是它为每个人节省了大量的时间。时间是我们最有限也是最宝贵的资源。为什么要让人们手动去做事情,而不是每次都能自动得到完美的结果呢?

另一个原因是,它大大降低了人为错误或由于指令不完整而导致错误的几率。

如果您想手动操作,请继续阅读。首先,您需要安装Homebrew,它将安装必要的命令行工具,并使安装其他必要的工具变得容易。

那么,安装一个独立版本的Ruby的两种最简单的方法是:

如果您想要在多个Ruby版本之间轻松切换的灵活性[推荐]

从以下四个选项中选择一个:

chruby和Ruby -install——这是我个人的建议,也是由Ruby on Mac脚本自动安装的。这些可以用Homebrew安装:

brew install chruby ruby-install

rbenv -可以用Homebrew安装 数位视讯 asdf

如果你选择了chruby和Ruby -install,你可以像这样安装最新的Ruby:

ruby-install ruby

一旦你安装了所有的东西,并根据上面工具的说明配置了.zshrc或.bash_profile,退出并重新启动Terminal,然后切换到你想要的Ruby版本。在chruby的情况下,它会是这样的:

chruby 3.1.3

您是否需要配置.zshrc或.bash_profile取决于您使用的是哪个shell。

如果你确定你不需要同时使用多个版本的Ruby(除了macOS自带的版本)[不推荐]

即使您认为您现在不需要另一个版本,您最终也将无法轻松地切换。这将导致混乱和头痛,这就是为什么我不建议用Homebrew安装和管理Ruby。

如果您不顾我的警告,选择使用Homebrew来安装Ruby,那么如果遇到任何问题,就只能靠自己了。

使用Homebrew安装ruby:

brew install ruby

然后运行以下命令更新您的PATH:

echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.1.0/bin:$PATH"' >> ~/.zshrc

上面命令中的3.1.0假设Homebrew安装了从3.1开始的Ruby版本。如果安装了不同的版本,请将3.1替换为Ruby版本的前两位数字。

如果你在M1/M2的Mac上,用/opt/homebrew替换/usr/local

然后“刷新”你的shell使这些更改生效:

source ~/.zshrc

或者您可以打开一个新的终端选项卡,或者退出并重新启动终端。

如果使用Bash,请将.zshrc替换为.bash_profile。如果您不确定,请阅读我的指南,了解您正在使用的外壳。

要检查您现在使用的是非系统版本的Ruby,您可以运行以下命令:

which ruby

它不应该是/usr/bin/ruby

ruby -v

它应该是3.1.3或更高版本。

一旦你安装了这个新版本的Ruby,你现在可以安装bundler(或任何其他gem):

gem install bundler

其他回答

在用rbenv安装ruby之后,你还需要设置全局ruby。为此,你可以这样做,rbenv全球3.2.1,然后安装绑定器与gem安装绑定器。它会起作用的。

运行这个

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

按照说明,(在我的例子中,添加到~/.zshrc);)


同样重要的是:更改只有在重新启动控制台时才生效。两个选项

输入source <modified file> 关上再打开

在尝试了之前的方法后,我在《Big Sur》中发现了这种方法:

sudo gem install -n /usr/local/bin cocoapods

对于最新的操作系统版本

首先运行sudo xcode-select——switch / Sudo gem install cocoapods—user-install

这对我很有用

如果你已经单独安装了ruby,并且使用rbenv/rvm安装了ruby,那么你的指针可能指向不同的版本。

try

gem env home

and

ruby -v

两者应该指向相同的版本。检查您是否使用rbenv/rvm安装了ruby,如果是,请删除您单独安装的ruby版本。

为了让gem工作,您必须调用rbenv,

rbenv shell <ruby version> 

and

rbenv global <ruby version>

我不确定RVM是如何工作的。 如果有用请告诉我。