【问题标题】:Ruby App MVC framework (not web)Ruby App MVC 框架(非 Web)
【发布时间】:2010-12-13 12:01:30
【问题描述】:

有人听说过用于应用程序/脚本的 Ruby MVC 框架吗?

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

现在我尝试了 narf 和 bowine - 但我认为 narf 已被放弃,并且 bowine 面向 GUI 并且处于早期 alpha 阶段。

根据反馈,我想澄清一下:当你启动一个新的网络应用程序时——无论多么小——你将使用 ruby​​ 或 merb 或 ramaze 或你有什么。您这样做是为了能够使用这些框架中的所有优点和最佳实践。当然,您可以只编写自己的小型服务器和一个文件 Web 应用程序,但为什么呢?所以我想知道是否有类似的应用程序/脚本框架。

那么大家有什么推荐的吗?


评论以下几个cmets: @Michael:我之前研究过 chef 和 puppet,两者都很好,但是 - 它们更多地用于自动化设置任务,而不是编写应用程序。

@mansu:我不想替换 Cron 或计划任务——它们已经做得很好了。我只是想让他们运行我的 MVC 脚本。

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

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

@bantic:不知道我是怎么想念托尔的——我不时查看 Katz 的博客。它有点像我正在寻找的东西,但在某种意义上并不完全是为了开发一个带有一堆选项的工具,即带有一堆关于如何进行复制的参数的复制命令。我想要的东西更像是一个包含大量任务的应用程序。

@Chuck:Chuck,在我开始编写更新数据库的脚本之前,我的想法也差不多。所以从这个意义上说,如果不是视图,我确实有 MVC 的 M 部分。您可能会争辩说我只有一个视图 - 控制台,或者我什至有多个 - 假设我的脚本需要每天运行并更新共享上的一些 .xls 文件,但还要将其输出为 csv,也许还有 tsv 文件,并且能够为客户端服务使用 xml。虽然文件类型的转换(也称为 Rails 中的格式化程序)发生在 Controller 中,但数据的实际布局(假设他们希望 .xls 中的某些字段为粗体和蓝色,以及重新排列的列)应该发生在 View 中。我感觉我已经把事情复杂化了,但另一方面——这就是 PHP 开发人员过去常说的框架,直到 Rails 出现刺激了 PHP 仿制品。 :-)

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

【问题讨论】:

    标签: ruby model-view-controller frameworks


    【解决方案1】:

    对于这类问题,听起来您想要一个 rails 应用程序的所有结构,但能够将其用于管理任务。一种解决方案是使用 rails 本身,因此您可以获得 mvc、测试和大量支持软件,但不是运行 scriipt/console 来启动 Web 应用程序,而是使用脚本/运行器在 rails 项目中运行 ruby​​ 代码。

    rails 命令 cd 命令 脚本/生成模型备份 耙分贝:迁移

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

    def 备份 定义数据库 把“内部备份数据库” 结尾 结束

    并使用脚本/运行器运行它

    脚本/运行器“Backup.new().do_database”

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

    【讨论】:

    • 乔,有趣的建议,我将不得不研究一下。我认为这是最接近我要找的东西。如果它不起作用,我总是可以开发一个新的解决方案。 :-)
    【解决方案2】:

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

    它可能不完全符合要求,但也许会提供一些灵感。

    【讨论】:

      【解决方案3】:

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

      对于脚本,它们就是脚本。 =p 你可以在你编写的任何东西中实现 MVC 设计模式,而不需要一个框架。

      【讨论】:

        【解决方案4】:

        我见过一些库,比如 cronedit,它可以让你使用 ruby​​ 运行 cron 作业。但是,我还没有看到具有生产质量的库。写一个告诉我们可能是个好主意。

        【讨论】:

          【解决方案5】:

          Yehuda Katz 的《雷神》呢? http://yehudakatz.com/2008/05/12/by-thors-hammer/

          【讨论】:

            【解决方案6】:

            我的观点是 MVC 在系统管理员任务方面有点浪费。所以我猜你实际上并不想要 MVC,因为你真的没有模型或视图,你真的有控制器和结果操作,对吗?

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

            另一方面,如果您想要一个 web 应用程序,以便人们可以运行 cPanel 之类的管理任务,那么您可以使用 rails/sinatra 并将其连接到 delay_job 或类似的东西。

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

            我的假设是否正确?

            【讨论】:

            • 这里没有足够的空间来发表我的评论 - 请参阅问题的回复。
            猜你喜欢
            • 2012-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-24
            • 1970-01-01
            • 2012-11-29
            • 1970-01-01
            • 2011-03-18
            • 2012-01-04
            相关资源
            最近更新 更多