为什么.gempec使用如此复杂的代码来获取lib目录(Ruby)?
我尝试通过“bundle gem[gem_name]”创建一个Ruby gem,一切都很顺利(有一个主文件夹,里面有lib和spec文件夹)。在.gemspec文件中,我看到了以下内容:为什么.gempec使用如此复杂的代码来获取lib目录(Ruby)?,ruby,Ruby,我尝试通过“bundle gem[gem_name]”创建一个Ruby gem,一切都很顺利(有一个主文件夹,里面有lib和spec文件夹)。在.gemspec文件中,我看到了以下内容: lib = File.expand_path('../lib', __FILE__) while生成指向/lib的绝对路径。但是,同样的结果可以通过以下方式实现: File.expand_path('lib') 这篇文章解释了第一种方法有多复杂,所以我想知道,与第二种更简单的方法相比,它真的有优势吗?只要您
lib = File.expand_path('../lib', __FILE__)
while生成指向/lib的绝对路径。但是,同样的结果可以通过以下方式实现:
File.expand_path('lib')
这篇文章解释了第一种方法有多复杂,所以我想知道,与第二种更简单的方法相比,它真的有优势吗?只要您希望目标文件路径字符串是当前工作目录,Ruby就会为您默认第二个参数。如果出于某种原因希望创建到另一个位置的绝对路径,可以传递第二个参数:
来源:
文件。expand_path
假定Dir.getwd
为默认参考点,这不一定与“{uuuuuu File\uuuuu}/。”
(或Ruby 2.0的\uuu Dir\uuuuu
)相同
自Ruby 2.0以来,您可以编写:
lib = File.expand_path('lib', __dir__)
这比原来的要好。我认为第一个代码片段中奇怪但经常使用的习惯用法是Ruby 2.0.0中添加
\uuuu dir\uuu
的原因之一。您的两个代码片段不相等,第二个代码片段不使用当前文件路径。您的意思是不是\uuuu file\uuu/。
?