Ruby App MVC框架(不是web)

有没有人听说过适用于Apps / Scripts的Ruby MVC框架?

当Rails出现时 – 它是一个革命性的工具,因为它将MVC带给了大量的Web开发人员,并且曾经迫使他们使用设计模式和约定。 我正在寻找类似的东西,但是要编写从cron或用户运行的平凡管理任务:更新,备份,管理工具箱等。现在我确信每个人都有自己喜欢的方式来设置他们的应用程序和工具箱,但我想知道是否有MVC的做事方式。 一些会迫使我使用设计模式和惯例的东西(我很有罪,就像我确定其他人一样,偶尔使用快捷方式)。

现在我尝试了narf和bowline – 但我认为narf被抛弃了,而bowline则面向GUI并处于早期alpha状态。

根据我想澄清的反馈:当你开始一个新的网络应用程序 – 无论多小 – 你将使用ruby或merb或ramaze或你有什么。 您这样做是为了能够使用这些框架中的所有好东西和最佳实践。 当然,您可以编写自己的servlets器和一个文件Web应用程序,但为什么呢? 所以我想知道是否有类似于应用程序/脚本的框架。

那么有人有任何建议吗?


评论下面的一些评论: @Michael:我之前看过厨师和木偶,两者都很好但是 – 他们更多的是自动化设置任务,而不是编写应用程序。

@mansu:我不想取代Cron或计划任务 – 他们已经做好了。 我只是希望他们运行我的MVC脚本。

@Robert:Anvil听起来被抛弃 – 最后一次更新是从2007年开始的,它适合作为GUI框架。 我不认为这是一种矫枉过正 – 原因是我现在有大约40个脚本使用(从客户csv更新数据到mysql,运行备份,在ftp上运行脚本等)我确信它必将成长。 我意识到的是我的一些脚本做了同样的事情 – 比如将数据从csv更新到mysql,所以我重构了我的代码以使用一个使用配置文件的公共库。 所以我认为这不是一种矫枉过正。 我只是想知道是否已有一个框架。

@mereghost:从GUI的角度来看,RuGUI非常有趣,值得进一步调查。 似乎积极维护。 我会看看我是否可以使用它,或者我是否可以根据它开发一些东西。

@bantic:不确定我是怎么错过Thor的 – 我不时检查Katz的博客。 它有点像我正在寻找的东西,但在某种意义上它并不是很适合用一堆选项开发一个工具,即复制命令和一堆关于如何复制的参数。 我想要的东西更多的是一个有很多任务的应用程序。

@Chuck:Chuck,我的想法几乎一样,直到我开始编写更新DB的脚本。 所以在这个意义上我确实有M部分MVC,如果不是视图。 您可能会争辩说我只有一个视图 – 控制台,或者我甚至有多个 – 让我们说我的脚本需要每天运行并在共享上更新一些.xls文件,但也将其输出为csv,也许是tsv文件,并能够为客户服务消费做xml。 虽然转换为文件类型(在Rails中称为格式化程序)发生在Controller中,但数据的实际布局(假设他们希望某些字段以粗体显示,蓝色在.xls中,并重新排列的列)应在View中进行。 我感觉我已经过度复杂了,但另一方面 – 这就是PHP开发人员曾经说过的框架,直到Rails出现刺激PHP淘汰。 🙂

还要继续这个例子 – 假设我有一个模型 – ClientData,它被各种脚本使用 – 有些写入该表,有些则抓取该数据。 现在我有4个脚本使用该表的各个部分来导入/导出csv,我使用DBI :: MySQL来创建我的查询并执行它们。 问题是,一旦我对该模型(表)进行了更改 – 我需要确保更新所有4个脚本,以反映列名称或其他内容的更改。 现在我使用脚本加载时需要的一个小对象和配置文件库。 但是我希望使用一个合适的框架来做这个而不是Jerry-rigged解决方案:-)这也不是一个Web应用程序。 我不需要网络界面 – 因为只有2个人可以访问这个是我自己和另一个系统管理员。 我可能需要为用户提供某种访问权限 – 以便授权人员可以强制运行某些脚本 – 但这不是必需的,并且使用说我可以引导Sinatra来执行此操作。

对于这种问题,听起来你想要一个rails应用程序的所有结构,但能够将它用于管理任务。 一种解决方案是使用rails本身,以便获得mvc,测试和许多支持软件,但不是运行scriipt / console来启动Web应用程序,而是使用script / runner在rails项目中运行ruby代码。

rails命令cd命令脚本/生成模型备份rake db:migrate

这是让您无错误运行的骨架。 然后为您的模型添加一些function:

def备份def数据库放“内部备份数据库”结束

并使用script / runner运行它

script / runner“Backup.new()。do_database”

如果您决定将其变成Web应用程序,则无需移动代码。 如果您有一些您想要重复使用的代码,您甚至可以将此想法添加到现有的Web应用程序中。

我不确定这是否正是您正在寻找的,但您应该考虑厨师框架 ,该框架旨在以相当统一的方式解决管理任务。

它可能不完全适合该法案,但也许它会提供一些灵感。

对于GUI应用程序,有一个名为RuGUI的“框架”(或类似的东西)。

对于脚本,它们就是脚本。 = p您可以在您编写的任何内容中实现MVC 设计模式 ,而不是真正需要框架。

我见过像cronedit这样的库,可以让你用ruby运行cron作业。 但是,我还没有看到一个具有生产质量的图书馆。 写一个并让我们知道可能是个好主意。

怎么样,Thor,Yehuda Katz? http://yehudakatz.com/2008/05/12/by-thors-hammer/

我的观点是MVC对于系统管理员任务来说是一种浪费。 所以我猜你实际上并不想要MVC,因为你真的没有模型或视图,你真的有控制器和结果行动吗?

但如果我理解正确,你需要约定,这样Puppet可能是正确的答案。 它是一种社区支持的脚本操作方法,可以通过cron或任何你喜欢的方式运行。

另一方面,如果你想要一个webapp,这样人们可以运行像cPanel这样的管理任务,那么你就可以使用rails / sinatra并将它连接到delayed_job或类似的东西。

最后一个命令行选项是使用服务器范围的rake并以这种方式定义任务。

我的假设是否正确?