【问题标题】:How to require file via absolute and relative paths in Crystal?如何通过 Crystal 中的绝对路径和相对路径获取文件?
【发布时间】:2019-12-23 08:51:44
【问题描述】:

有一个文件,只有一个文件,没有碎片或其他任何东西。

/alex/projects/inspector/inspector.cr

我想在另一个文件夹的另一个文件中要求它

/alex/projects/my-project/play.cr

这行不通

require "/alex/projects/inspector/inspector"
require "/alex/projects/inspector/inspector.cr"

这也不行

CRYSTAL_PATH=$CRYSTAL_ROOT/src:lib:/alex/projects/inspector

require "inspector"
require "inspector.cr"
require "./inspector"
require "./inspector.cr"

附:

我想避免使用分片等,因为我没有计划共享或发布该文件。它只是一个被不同位置的几个其他文件使用的文件。

我通过创建符号链接解决了这个问题

ln -s /alex/projects/inspector/inspector.cr /alex/projects/my-project/inspector.cr

require "./inspector"

【问题讨论】:

    标签: crystal-lang


    【解决方案1】:

    目前,require 只是相对的(正如您从 your forum post 中了解到的那样)。但是,您使用CRYSTAL_PATH 走在正确的轨道上。

    CRYSTAL_PATH 是一个environment variable used by the Crystal compiler,它告诉它在哪里寻找依赖项。因此,不要像看起来那样在代码中使用它,而应该在构建可执行文件时使用它:

    CRYSTAL_PATH=$CRYSTAL_ROOT/src:lib:/alex/projects/inspector crystal build /alex/projects/my-project/play.cr
    

    请注意,必须定义 CRYSTAL_ROOT 才能使该确切命令起作用。如果您需要找到当前的CRYSTAL_PATH 以追加到它,您可以使用crystal env。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      相关资源
      最近更新 更多