我正在尝试构建一个Ruby On Rails应用程序,该应用程序将允许监视和控制多个Web服务。我目前正在运行这些服务,并且能够在控制台应用程序中看到每个服务的“状态”,该应用程序列出了服务及其状态,即。
Service1 Running
Service2 Paused
Service3 Waiting on Files
我想,我希望RoR应用程序将这些响应收集到PORO对象集合中,这些对象称为Process和collection Processes。然后,我希望可以使用默认路由打开视图“ process_list.html.erb”,在该视图中,将在加载时使用jQuery页面创建数据表“ process_table”,该数据表将从该Process集合中填充。我的问题是,尽管我喜欢RoR应用程序的结构,但我不了解RoR应用程序中的控制流程。如果我在jQuery和javascript页面中编写此代码,我会知道index.jsp页面将包含jQuery DataTable javascript链接,该链接将在加载页面时执行。这将引用另一个javascript函数,该函数将调用Web服务,收集响应,将其转换为JSON数组,然后将其返回到DataTable,在其中将其呈现为表格。我可以有一个计时器来定期刷新页面,等等。虽然它可以正常工作,并且我之前已经构建过它,但是看起来它似乎比适当的RoR应用程序要少得多。
这是到目前为止我被困的步骤:
1)使用新的大师-O
2)光盘大师
3)导轨产生支架过程显示
4)在routes.rb中,我添加了:
resources :processes, :only => [:show]
root 'processes#show'
这应该带我到apps / views / processes / show.html.erb页面,我认为我可以以某种方式提供一个JavaScript页面,该页面将在加载时执行以创建PORO对象并将其返回给DataTables,可以通过foreach循环处理的数组,将process.name,process.status提取到表中。但是,我收到一个错误,在app / controllers / process_controller.rb中有一个部分:
def set_process
@process = Process.find(params[:id])
end
没有为Process定义和'find'。现在,我在任何地方都找不到“ Process”类,也不知道这是什么或为什么被调用。索引方法中有一个对@process = Process.all的引用。再次,我在哪里定义这些?
我上面显示的步骤是开始构建此类应用程序的正确方法吗?如果是,我该怎么做才能创建或编辑Process类并添加这些方法?我在哪里放置此页面的javascript?希望能找到一些指向何处,应阅读哪些内容的指针,以便我理解RoR应用程序的流程。
答案 0 :(得分:1)
Rails脚手架做出了许多假设,期望您的控制器动作与数据库模型/表相对应。正如其他人提到的那样,您应该避免使用Process
,因为它是一个核心的ruby模块,而我建议使用MonitorProcess
。
如果您想使用数据库模型来存储有关流程的内容,则需要一个模型(rails g model monitor_process
),并且您的控制器也需要使用
rails generate scaffold monitor_processes
但是,这将使用构建标准的MVC设置,迁移以创建数据库表,模型类MonitorProcess
,具有RESTful路由(索引,显示,新建,创建,更新和销毁)的控制器,以及索引,显示,新建,编辑视图以及用于新建和编辑的表单局部视图,以及用于编写测试的文件设置。
如果不需要访问数据库模型,则可以从控制器中删除它们,或将其注释掉。但是,这就是您偏离MVC的道路。
before_action :set_monitor_process, only: [:show, :edit, :update, :destroy]
def set_process
@mocel_process = ModelProcess.find(params[:id])
end
从这里开始,您可以考虑使用操作电缆,并根据需要在该页面上使用自定义js。但是,您甚至需要此应用程序的导轨吗?听起来可能比您需要的开销更多。 Scaffold是一个工具,可以使基本数据驱动的应用程序的快速原型制作变得非常快速和容易。但是它附带许多约定,您可能不需要用例。
但是,在不确切知道要创建/监视哪些Web服务以及如何运行的情况下,很难说出是否应该使用Rails。当然,它可以构建以完成Scaffold为您设置的内容之外的许多事情。此处只是为了快速进行基本设置并避免大量重复使用。有很多框架可以执行诸如后台作业等工作。但是问题是,您是否需要MVC?如果没有,那么您肯定还有其他选择。如果您只需要后端解耦的后端,则可以看看Using Rails for API-only Applications 如果您喜欢使用Ruby,Sinatra可能是look into的另一种选择。