2015-10-03 152 views
0

假设我正在开发一个Ruby gem,它将通过添加到其gemfile文件中来安装在项目中。从我的宝石中,我想知道项目的根目录路径。我怎么弄到的?从Ruby Gem中,我如何获取项目的目录路径?

+0

也http://stackoverflow.com/questions/10132949。 – sawa

+0

我认为这个问题可能是重复的,但它似乎要求使用gem项目的目录而不是gem目录本身的路径。 – matt

+0

@matt如果是这样,那么这与宝石无关。 – sawa

回答

1

如果您使用的是Rails,请使用Rails.root

如果你不知道'主要项目'是Rails ......那么它并不是一个好方法。

全球$0是ruby脚本被调用的命令名称。但是这不会包含一条路径。你可以试试File.expand_path $0,但是有很多原因会导致这个不能给你你想要的,包括程序可能改变了它的“工作目录”。 Dir.pwd会给你“当前工作目录”,只有当项目从“项目目录”被调用并且代码没有改变当前工作目录时,它才可能是“项目”的目录。

通常情况下,ruby中实际上没有“项目”或“项目目录”的内置概念 - 您可以拥有一个根本不属于项目组成部分的ruby脚本,它只是一个文件生活在你想要的文件系统中的任何地方。

我不认为有一个通用的可靠方法来做到这一点,它取决于“项目”是如何建立的,当然这是宝石不能确定的。

但是,如果您使用的是Rails,Rails.root,因为Rails具有如何设置和调用的约定,并在其启动过程中实现了功能Rails.root以记录Rails的项目目录。

相关问题