问题 .gem文件包含什么?它是如何被Rails框架使用的?


我刚刚使用bundle创建了一个测试gem,它创建了一个内容不可读的.gem文件,所以我很想知道

  1. .gem文件包含什么?这是二进制数据吗?我以前认为.gem文件包含打包的ruby函数

  2. 这个.gem文件是如何被rails框架使用的?因为它看起来不像一个模块

谢谢


1321
2018-03-09 09:01


起源



答案:


如果检查文件系统上的文件,可以看到发生了什么。

在Posix环境中,您可以使用file命令检查文件:

$: file bundler-1.3.0.gem          
bundler-1.3.0.gem: POSIX tar archive

如您所见,它是一个tar存档。所以它是一个二进制文件,由包装和管理 gem 工具。

这是'二进制'所以你不会像你预期的那样看到它。

你是对的,你可以继续认为它包含打包的ruby'函数'。

你告诉它通过你的gemspec包含的所有东西(不管你包括它)都在那里。

至于Rails如何使用gemfile,通常通过将gem安装到您的系统来使用它,如何完成部分取决于您的环境决策。


7
2018-03-09 09:26





gem文件只是一个包含(至少)gemspec文件的tar存档。通常还会有ruby源文件以及可能的本机代码或支持资产(例如,设计用于rails的gem也可以打包一些javascript)。包含README,CHANGELOG和其他文档也很常见。


5
2018-03-09 09:24



谢谢,我怎样才能看到/打开一个gem文件? - iCyborg
只是假装它是一个普通的tar文件 - tar -xvf foo.gem - Frederick Cheung


答案:


如果检查文件系统上的文件,可以看到发生了什么。

在Posix环境中,您可以使用file命令检查文件:

$: file bundler-1.3.0.gem          
bundler-1.3.0.gem: POSIX tar archive

如您所见,它是一个tar存档。所以它是一个二进制文件,由包装和管理 gem 工具。

这是'二进制'所以你不会像你预期的那样看到它。

你是对的,你可以继续认为它包含打包的ruby'函数'。

你告诉它通过你的gemspec包含的所有东西(不管你包括它)都在那里。

至于Rails如何使用gemfile,通常通过将gem安装到您的系统来使用它,如何完成部分取决于您的环境决策。


7
2018-03-09 09:26





gem文件只是一个包含(至少)gemspec文件的tar存档。通常还会有ruby源文件以及可能的本机代码或支持资产(例如,设计用于rails的gem也可以打包一些javascript)。包含README,CHANGELOG和其他文档也很常见。


5
2018-03-09 09:24



谢谢,我怎样才能看到/打开一个gem文件? - iCyborg
只是假装它是一个普通的tar文件 - tar -xvf foo.gem - Frederick Cheung