如何以普通用户身份运行 bundle install

Tob*_*oby 7 ruby bundler unity-test-framework

我正在尝试使用bundle install. 我不是 Ruby 用户——这是我第一次真正涉足运行 rake。我只是尝试使用 ThrowtheSwitch.org 中使用 Rake 等的一些软件包。

几天前我最初使用以下方法安装了 ruby​​:

sudo apt-get install ruby-full
Run Code Online (Sandbox Code Playgroud)

这让我可以在 Unity 测试框架中使用 rake。现在我想使用 CMock。使用 CMock 的说明说cd进入目录然后

$ bundle install
$ bundle exec rake
Run Code Online (Sandbox Code Playgroud)

所以我使用以下方法安装捆绑器:

$ sudo apt-get install bundler
Run Code Online (Sandbox Code Playgroud)

但是然后运行bundle install不断地询问我的密码。所以我尝试:

$ gem install bundler
Run Code Online (Sandbox Code Playgroud)

对 /var/lib/gems/1.9.1 的写权限失败。所以我尝试:

$ sudo gem install bundler
Run Code Online (Sandbox Code Playgroud)

安装正常,所以我再试bundle install一次。但仍然不断被要求输入我的密码。所以我尝试:

$ sudo bundle install
Run Code Online (Sandbox Code Playgroud)

并得到一个警告,我不应该以 root 身份运行 bundler:

不要以 root 身份运行 Bundler。如果需要,Bundler 可以请求 sudo,并且以 root 用户身份安装你的 bundle 会破坏该机器上所有非 root 用户的应用程序。

如何正确安装它以便我可以按预期运行它?

注意:我已经看到关于这个主题还有其他几个问题,我没有理解这些问题的答案,所以让我强调我不是一个红宝石(甚至网络堆栈)开发者 - 我需要这个外行人的术语可能的。

另请注意:我确实看到多次提到 RVM 和 rbenv。我不确定它们是否特别与这些问题有关,或者是否需要一个或两个。我目前也没有。我即将研究它们现在到底是什么。

注意第三点:我的平台是 WSL(所以是 Ubuntu,有点像)。

小智 5

如果您出于某种原因坚持在系统中安装 ruby​​,则可以执行以下操作:

export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
export PATH="$GEM_HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

在其他地方找到它:https ://guilhermesimoes.github.io/blog/using-bundler-with-system-ruby


小智 3

我使用 Ruby 才几周时间。我会说,我知道你在哪里。我不会提供太多帮助,但会说,对于评论中的最后一个问题,我的理解是这两个命令是不同的。

我对简短答案的理解是:人们可以拥有需要使用的不同版本的 Ruby(遗留项目等),并且并非每个版本的 Ruby 都可以运行给定 gem 的每个版本。因此,可以使用 rbenv 或 rvm 来帮助管理使用特定版本的 ruby​​ 设置项目,然后安装所需的 gem 的艺术。

我一直在我的 mac 上使用 rvm 并在 Linux 上使用 rbenv,发现它们对于我一直在做的简单事情来说足够相似。事实证明,在 Linux 上安装 rbenv 稍微容易一些。一旦正确设置,就不再需要 sudo 来安装 gem - 这是首选。我建议尝试其中之一并按照他们的网站说明进行安装。一旦设置完毕,事情应该会变得更顺利。