捆绑秀。运行bundle install时,gems安装在哪里?他们只是在我的Ruby上吗?

时间:2016-04-07 22:27:12

标签: ruby bundler

所以我很好奇我的设计宝石安装在哪里,所以我可以做一些潜水设计的源代码。这导致我在运行bundle install时询问gems的安装位置。

所以当我在我的rails app目录中运行它时:

bundle show

Gems included by the bundle:
  * Ascii85 (1.0.2)
  * CFPropertyList (2.3.2)
  * aasm (4.3.0)
  * actionmailer (3.2.22.2)
  * actionpack (3.2.22.2)
  * active_model_serializers (0.8.1)
  * activeadmin (1.0.0.pre2)
  * activemodel (3.2.22.2)
  * activerecord (3.2.22.2)
  * activeresource (3.2.22.2)
  * activesupport (3.2.22.2)
  * activeuuid (0.5.0)
  * acts-as-taggable-on (3.5.0)
  * acts_as_tree (2.2.0)
...
  * devise (3.5.4)

当我跑步时:

bundle show devise

/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4

那条路是什么?它来自哪里?

另外,更重要的问题是,这是否意味着当你运行bundle install时所有的gems都在jsut上安装了 on 你的Ruby?

2.1.6和2.1.0是什么数字?

1 个答案:

答案 0 :(得分:1)

Gem安装将由Ruby版本命名。因此,如果您正在使用Rbenv或RVM并安装了一些不同的Ruby版本,则运行gem install将仅为您当前选择的Ruby版本安装gem。

要回复您的评论,如果您想使用它,则无法在本地安装gem。 "局部"意思"在你的电脑上#34;。

回答有关路径的问题:

/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4
  1. 您正在使用rbenv,因此所有ruby安装都在~/.rbenv目录中命名。
  2. 您目前正在使用ruby版本2.1.6,因此您的宝石正在安装​​到该文件夹​​
  3. 解释2.1.0文件夹 - 基本上在发布宝石时,它们被精确定位到特定的Ruby版本。因此,当您请求将devise gem安装到您的ruby 2.1.6时,选择最接近的匹配设计(在这种情况下,为ruby 2.1.0构建一个)。
  4. 顺便说一下,当你想调试你已安装的gem时,使用bundle show有时会很有用。您可以进入源代码并添加断点。这不是我建议经常做的事情,但是当你弄乱旧的,部分功能的宝石时可以提供帮助。

    顺便说一句,当你在Ruby"上安装宝石时,这可能不是最好的措辞。安装gem不会修补Ruby语言。它所做的就是安装一个可以选择包含在程序中的库(通过require)。有些宝石也会创建shell命令(比如rake)。