以下代码位于名为test.dj的文件中。该文件属于Ruby内部开发的代码库,没有准确的文档:
entity :bob do
action :say_hi do
puts "Hello!"
end
end
如何从命令提示符运行此代码?当我尝试像这样运行它时:
$ruby test.dj
我收到错误消息:
test.dj:1:in `<main>': undefined method `entity' for main:Object (NoMethodError)
我看到的唯一宝石是Hdk,但我也无法在网上找到它的文档。
答案 0 :(得分:4)
您的脚本确实是Ruby代码,但它不是独立的Ruby代码。它是Ruby内部DSL中的一个程序。 DSL正在定义方法“实体”和“动作”,它们不是Ruby的一部分。
用DSL编写的脚本旨在由DSL执行。可能存在应该用于调用此脚本的另一个命令。我不知道那个命令会是什么。假设该命令被称为“distributed_jobs”,那么您可以这样执行此脚本:
distributed_jobs test.dj
但只有您正在使用的DSL文档可以回答如何执行此脚本。
答案 1 :(得分:2)
在这种情况下,查找名为Rakefile
,Gemfile
或config.ru
的文件通常很有用。
“Rake”是一个 R uby M ake 工具,您可以将其作为CLI运行。它将寻找在Ruby中创作的Rakefile
来定义功能。您还可以运行$ rake -T
以获取可用命令列表,其中test
有望成为一个命令。
大多数Ruby项目使用Bundler来管理依赖项。如果前一个开发人员声明了一个依赖项,你可能会在Gemfile中找到它。如果存在,则在目录中运行$ bundle install
应该安装依赖项(注意:您可能需要先运行gem install bundler
)。
这称为“rackup”配置,允许Ruby应用程序作为Rack webserver应用程序运行。我怀疑你会在你的项目中找到这个,但如果你这样做,它可以为你提供关于所使用的依赖项或库的线索。