gpt4 book ai didi

ruby - 如何正确地包含来自 Ruby rakefile 的其他项目文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:46 25 4
gpt4 key购买 nike

我在将其他文件包含在 Rake 文件中时遇到问题。例如,我有一个 version.rb 文件,其中包含我想在 rake 文件中引用的版本号,另外,我有一个 gem 规范,在 .gemspec 文件中指定,我也想在 rake 中使用它文件。我无法确定引用这两个文件的正确路径。事实上,这是我遇到最多问题的 ruby​​ 问题(require statements/LOAD_PATH),它非常令人沮丧;由于我不确定如何解决这些问题,问题变得更糟了)。我目前正在避免使用 bundler 等包句柄,因为我需要先了解基础知识。

请参阅我的代码编辑器的附件图片,其中显示了项目结构(标准 gems 结构,对于名为 Cart 的 gem,它只是一个用于试验的虚拟应用程序)。

Cart project structure

因此,我的 rakefile.rb 位于项目的根文件夹中。指定require时,指定的路径应该相对于哪里?它是相对于您需要的文件还是相对于 lib 文件夹或其他任何文件?我正在运行 rake -T,列出任务,这些是我看到的错误消息:

尝试从 Rakefile.rb 中获取 version.rb 文件:

require 'cart/version'

$ rake -T
rake aborted!
cannot load such file -- lib/cart/version
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:5:in `<top (required)>'

require 'lib/cart/version'

$ rake -T
rake aborted!
cannot load such file -- lib/cart/version
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:5:in `<top (required)>'
(See full trace by running task with --trace)

尝试从 Rakefile.rb 中获取 cart.gemspec:

require 'cart.gemspec'

$ rake -T
rake aborted!
cannot load such file -- cart.gemspec
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:6:in `<top (required)>'
(See full trace by running task with --trace)

我使用的是 Ruby 版本 2.0.0,rake 版本 0.9.6(OSX Mavericks 附带的默认版本)。

(PS,我的意图是购买像 RubyGems 这样的 Ruby IDE,但我还是推迟了,因为我想先学习基础知识,我不想依赖 IDE 解决问题对于我,如果我不明白如何从第一原则来解决它们)。

谢谢。

最佳答案

When specifying a require, where should the path specified be relative to? Is it relative from the file you are requiring from or relative to lib folder or whatever else?

require_relative 将相对于调用文件。

require 查找 $LOAD_PATH 目录,除非文件路径是绝对路径。由于您的项目似乎没有在 $LOAD_PATH 中声明自己并且您的路径不是绝对的,因此找不到该文件。

既然这看起来像一个 gem ,你有没有尝试添加标准

#this will be the absolute path to lib based on the calling __FILE__
lib = File.expand_path('../lib', __FILE__)
#this will include the path in $LOAD_PATH unless it is already included
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

这将断言 $LOAD_PATH 中的 lib 目录,然后您可以根据 lib 的路径进行请求,例如需要“购物车/版本”

关于ruby - 如何正确地包含来自 Ruby rakefile 的其他项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com