【问题标题】:What is the equivalent of Java CLASSPATH in Ruby?Ruby 中的 Java CLASSPATH 等价物是什么?
【发布时间】:2009-09-25 07:50:58
【问题描述】:

我想在任何地方运行 ruby​​ 程序。 我想我已经理解它是 RUBYLIB。但我不能让它工作。能举个例子吗?

【问题讨论】:

  • 致那些不是 Java 的红宝石爱好者:Java 中的 CLASSPATH 是什么? :)
  • CLASSPATH 是 ;或:包含 *.class 文件或库(包含 *.class 文件)的分隔目录列表,供 Java VM 在加载类时解析依赖关系。
  • 我认为这个问题的意思是在 Java 中有一组烦人的类路径“问题”。什么对应于 Ruby 中的类路径问题?缺少宝石/什么?恕我直言,仍然没有很好地回答。

标签: ruby


【解决方案1】:
  • 您需要操纵加载路径$LOAD_PATH ($:)
  • 这是通过 -I directories 完成的(在类 Unix 系统上,目录由 : 分隔,在 DOS/Windows 系统上由 ; 分隔。)
  • 您可以将-I 开关添加到RUBYOPT$SAFE 必须为 0)
  • 或使用包含搜索路径的RUBYLIB$SAFE 也必须为 0)。
  • RUBYPATH 还会更改 Ruby 程序的搜索路径。
  • 对于环境变量,请确保它们已正确设置或导出,以便 Ruby VM 看到它们。您可以在 ruby​​.bat 或 ruby​​.sh 中添加调试打印。
  • 检查您的$SAFE 设置。如果你不知道,那可能没问题。

我总是将RUBYLIBRUBYPATH 设置为我的加载路径,并将-S 选项添加到解释器调用中。

【讨论】:

    【解决方案2】:

    有一个选项 -S 使用 PATH 环境变量查找脚本。

    例如做:

    ruby -S some_script
    

    将在当前操作系统的PATH环境变量中查找some_script。

    更新:如果您的脚本需要其他文件,请使用以下语句:

    require File.join(File.dirname(__FILE__), "name_of_required_file") 
    

    代替:

    require "name_of_required_path"
    

    【讨论】:

    • 好的,前面提到的文件“some_script”现在被ruby正确找到了(谢谢!),但是这个文件还包含一个'require'foo'”,它没有被加载(LoadError)。它驻留在与第一个脚本相同的目录中...有什么想法吗?
    • 要包含您所需的文件,您可以执行以下操作 require File.join(File.dirname(FILE), "name_of_required_file")
    • 注释代码删除文件前后的2个下划线应该是xxFILExx,其中x是下划线
    • 是的,史蒂夫的解决方案应该有效。我已经更新了帖子。
    猜你喜欢
    • 2010-11-01
    • 2011-05-25
    • 2011-03-16
    • 2012-08-03
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多