当前位置:  开发笔记 > 后端 > 正文

Ruby路径管理

如何解决《Ruby路径管理》经验,为你挑选了3个好方法。

在ruby程序中管理require路径的最佳方法是什么?

让我举一个基本的例子,考虑一个结构,如:

\MyProgram

\MyProgram\src\myclass.rb

\MyProgram\test\mytest.rb

如果我在我的测试中使用,require '../src/myclass'那么我只能从\MyProgram\test文件夹中调用测试,但我希望能够从任何路径调用它!

我想出的解决方案是在所有源文件中定义以下行:

ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(ROOT) 然后总是使用 require "#{ROOT}/src/myclass"

有没有更好的方法呢?



1> David Tchepa..:

从Ruby 1.9开始,您可以使用require_relative执行此操作:

require_relative '../src/myclass'

如果你需要这个版本的早期版本,你可以根据此SO评论从extensions gem获取它.



2> sris..:

这是一个稍微修改过的方法:

$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "src"))

通过将源路径预先添加到$ LOAD_PATH(又名$ :),当您需要代码时,您不必明确提供根等. require 'myclass'



3> inger..:

相同,嘈杂的恕我直言:

$:.unshift File.expand_path("../../src", __FILE__)
require 'myclass'

要不就

require File.expand_path "../../src/myclass", __FILE__

在(Debian)Linux上使用ruby 1.8.7和1.9.0进行测试 - 请告诉我它是否适用于Windows.

为什么一个更简单的方法(例如'use','require_relative',或者像这样的sg)没有内置到标准的lib中?更新:require_relative从1.9.x开始

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有