捆绑表演。当我 运行 bundle install 时,gems 安装在哪里?他们只是在我的 Ruby 上吗?
Bundle show. Where are gems installed when I run bundle install? Are they just on my Ruby?
所以我很好奇我的设计 gem 安装在哪里,这样我就可以深入研究设计的源代码。这导致我问 运行 bundle install 时 gem 的安装位置。
所以当我 运行 在我的 rails 应用程序目录中时:
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
那条路是什么?它来自哪里?
此外,更重要的问题是,这是否意味着当您 运行 捆绑安装时所有 gem 真的只是安装 您的 Ruby?
2.1.6 和 2.1.0 是什么数字?
Gem 安装将由 Ruby 版本命名空间。因此,如果您使用的是 Rbenv 或 RVM,并且安装了几个不同的 Ruby 版本,运行 gem install
只会为 Ruby 版本安装 gem您当前已选择。
为了回应您的评论,如果您想使用它,除了在本地安装 gem 别无选择。 "Locally" 意思是 "on your computer"。
回答你关于路径的问题:
/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4
- 您正在使用
rbenv
,因此您所有的 ruby 安装都在 ~/.rbenv
目录中命名空间。
- 您当前使用的是 ruby 版本 2.1.6,因此您的 gem 正在安装到该文件夹
- 解释
2.1.0
文件夹 - 基本上当 gem 发布时,它们被精确定位到特定的 Ruby 版本。因此,当您请求将 devise
gem 安装到 ruby 2.1.6 时,会选择最匹配的设备(在本例中,是 ruby 2.1 的构建版本。 0).
顺便说一句,当您想要调试已安装的 gem 时,使用 bundle show
有时会很有用。您可以进入源代码并添加断点。这不是我建议经常做的事情,但是当你弄乱旧的、部分功能的 gems 时,它会有所帮助。
顺便说一句,当您安装 gem 时 "on your Ruby",这可能不是最好的措辞。安装 gem 不会修补 Ruby 语言。它所做的只是安装一个库,您可以选择将其包含在您的程序中(通过 require
)。一些 gem 也会创建 shell 命令(例如 rake
)。
所以我很好奇我的设计 gem 安装在哪里,这样我就可以深入研究设计的源代码。这导致我问 运行 bundle install 时 gem 的安装位置。
所以当我 运行 在我的 rails 应用程序目录中时:
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
那条路是什么?它来自哪里?
此外,更重要的问题是,这是否意味着当您 运行 捆绑安装时所有 gem 真的只是安装 您的 Ruby?
2.1.6 和 2.1.0 是什么数字?
Gem 安装将由 Ruby 版本命名空间。因此,如果您使用的是 Rbenv 或 RVM,并且安装了几个不同的 Ruby 版本,运行 gem install
只会为 Ruby 版本安装 gem您当前已选择。
为了回应您的评论,如果您想使用它,除了在本地安装 gem 别无选择。 "Locally" 意思是 "on your computer"。
回答你关于路径的问题:
/Users/jeffrey.wan/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/devise-3.5.4
- 您正在使用
rbenv
,因此您所有的 ruby 安装都在~/.rbenv
目录中命名空间。 - 您当前使用的是 ruby 版本 2.1.6,因此您的 gem 正在安装到该文件夹
- 解释
2.1.0
文件夹 - 基本上当 gem 发布时,它们被精确定位到特定的 Ruby 版本。因此,当您请求将devise
gem 安装到 ruby 2.1.6 时,会选择最匹配的设备(在本例中,是 ruby 2.1 的构建版本。 0).
顺便说一句,当您想要调试已安装的 gem 时,使用 bundle show
有时会很有用。您可以进入源代码并添加断点。这不是我建议经常做的事情,但是当你弄乱旧的、部分功能的 gems 时,它会有所帮助。
顺便说一句,当您安装 gem 时 "on your Ruby",这可能不是最好的措辞。安装 gem 不会修补 Ruby 语言。它所做的只是安装一个库,您可以选择将其包含在您的程序中(通过 require
)。一些 gem 也会创建 shell 命令(例如 rake
)。