如何在终端的Ruby脚本中运行dj文件类型

时间:2017-02-14 18:13:04

标签: ruby

以下代码位于名为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,但我也无法在网上找到它的文档。

2 个答案:

答案 0 :(得分:4)

您的脚本确实是Ruby代码,但它不是独立的Ruby代码。它是Ruby内部DSL中的一个程序。 DSL正在定义方法“实体”和“动作”,它们不是Ruby的一部分。

用DSL编写的脚本旨在由DSL执行。可能存在应该用于调用此脚本的另一个命令。我不知道那个命令会是什么。假设该命令被称为“distributed_jobs”,那么您可以这样执行此脚本:

distributed_jobs test.dj

但只有您正在使用的DSL文档可以回答如何执行此脚本。

答案 1 :(得分:2)

在这种情况下,查找名为RakefileGemfileconfig.ru的文件通常很有用。

Rake文件

“Rake”是一个 R uby M ake 工具,您可以将其作为CLI运行。它将寻找在Ruby中创作的Rakefile来定义功能。您还可以运行$ rake -T以获取可用命令列表,其中test有望成为一个命令。

的Gemfile

大多数Ruby项目使用Bundler来管理依赖项。如果前一个开发人员声明了一个依赖项,你可能会在Gemfile中找到它。如果存在,则在目录中运行$ bundle install应该安装依赖项(注意:您可能需要先运行gem install bundler)。

config.ru

这称为“rackup”配置,允许Ruby应用程序作为Rack webserver应用程序运行。我怀疑你会在你的项目中找到这个,但如果你这样做,它可以为你提供关于所使用的依赖项或库的线索。