Ruby App MVC 框架(非 Web)

2023-12-21

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

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

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

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

那么有人有什么建议吗?


评论一下下面的几条评论:@Michael:我之前研究过 Chef 和 Puppet,两者都很好,但是 - 它们更多的是用于自动化设置任务,而不是编写应用程序。

@mansu:我不想取代 Cron 或计划任务 - 他们已经做得很好了。我只想让他们运行我的 MVC 脚本。

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

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

@bantic:不知道我是如何想念雷神的 - 我时不时地查看卡茨的博客。它有点像我正在寻找的东西,但在某种意义上并不完全是它适合开发具有一堆选项的工具,即带有一堆关于如何进行复制的参数的复制命令。我想要的东西更像是一个具有大量任务的应用程序。

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

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


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

导轨命令 光盘命令 脚本/生成模型备份 耙数据库:迁移

这是让您顺利运行的骨架。然后向您的模型添加一些功能:

默认备份 定义数据库 把“内部备份数据库” 结尾 结尾

并使用 script/runner 运行它

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby App MVC 框架(非 Web) 的相关文章

  • 供用户使用的 Rails 模型结构

    我是 Rails 新手 正在开发我的第二个 Rails 应用程序 该应用程序将为用户提供不同的角色 但某些用户将具有多个角色 该网站的每个用户都将是艺术家 一些用户将担任主持人的角色 我将如何构建这个 在我使用的一些 PHP 应用程序中 只
  • Rails3 SQL 日志记录输出在单独的文件中

    我希望将所有 ActiveRecord SQL 日志记录重定向到不同的文件中 将其放在控制台或 log development log 中有点混乱 怎么做 我希望将其放在 log development sql log 文件中 Thanks
  • 检查数组元素的大小是否相同

    有没有最好 最有效的方法来检查数组元素的大小是否相同 1 2 3 4 5 gt false 1 2 3 4 5 6 gt true 我有什么 def element of same size arr arr map size uniq si
  • 与 Array 相比,使用 Ruby NArray 有哪些优点?

    我刚刚遇到了 Ruby 的 NArray 库 请原谅我在问这个问题时的无知 与标准 Ruby Array 实现相比 使用 NArray 库有哪些优点 我已经看到 NArray 是面向数值计算的 但是看看 API 看起来好像只有一些针对数值的
  • 字符串被两个不同的分隔符分割

    我有这样的字符串 some dasd dasd dasdas dasdas dasd das dsad 我需要用两个不同的符号将字符串拆分为数组 and 所以我想得到数组 some dasd dasd dasdas dasdas dasd
  • 使用自定义 gem 在 Dreamhost/Passenger 上部署 Sinatra 应用程序

    我有一个 Sinatra 应用程序 正在尝试在 Dreamhost 上运行 该应用程序利用 pony 发送电子邮件 为了让应用程序从一开始就启动并运行 在添加小马之前 我必须gem unpack rack and gem unpack si
  • 回形针:从带扩展名的 url 上传

    我想通过 S3 存储上的回形针从 URL 上传图片 我与 Ruby 1 9 3 Rails 3 2 6 paperclip 3 1 3 aws sdk 1 3 9 我有我的图片模型 class Asset has attached file
  • 使用 Ruby 替换文件中的特定行

    我有一个如下所示的文本文件 a txt open close open open close open 我需要找到一种方法将第三行替换为 close 我做了一些搜索 大多数方法都涉及搜索该行而不是替换它 在这里不能真正做到这一点 因为我不想
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • 直接或通过包含定义嵌套类

    假设我正在为我的家庭存储系统建模 我有很多不同类型的Container 而且我发现其中很多都有装饰品 因此我为这种常见情况设置了一些辅助代码 我的容器中有我的Mantlepiece and my Bookcase 我只在前者上存放装饰品 而
  • sinatra 应用程序在运行时无法启动

    我使用的是 Ubuntu 10 10 Ruby 1 9 2 无论我做什么 我都无法在本地计算机上启动 sinatra 应用程序 你好 rb require sinatra get do Hello World end ruby hello
  • 不将所需的文件包含到 vim 全方位补全中

    如果我尝试在具有 require xxx 语句的 Ruby 文件中自动完成 它会开始扫描所需的所有文件 以及所需文件所需的文件 它每次都会这样做 是否可以使 vim 自动完成功能不扫描所需文件或仅扫描特定路径中的文件 例如仅 app 以下之
  • Ruby - :variable 和 @variable 之间的区别

    作为 Ruby on Rails 新手 我知道 和 引用具有不同的含义 我看见这个帖子 https stackoverflow com questions 3538575 whats the difference between and v
  • mongoid 中的嵌入文档与哈希数据类型

    我找不到任何讨论此问题的博客文章或文档 它们 嵌入式文档和哈希数据类型 非常相似 彼此相比有何好处或限制 考虑我的架构设计 class HistoryTracker include Mongoid Document include Mong
  • 从 Rails Helper 返回多个标签的最佳方法是什么?

    我想创建一个隐藏字段并在一个助手中创建一个链接 然后将两者输出到我的 erb 应该输出结果 link to something a path form hidden field something tableize value gt som
  • ruby CSV重复行解析

    我有一些需要处理的 CSV 数据 但无法找到匹配重复项的方法 数据看起来有点像这样 line id name item 1 item 2 item 3 item 4 1 251 john foo foo foo foo 2 251 john
  • 如何查找重复字母最多的单词

    我的目标是找到给定字符串中重复字母最多的单词 例如 aabcc ddeeteefef iijjfff 会回来 ddeeteefef 因为 e 在这个单词中重复了五次 这比所有其他重复字符都多 到目前为止 这是我得到的 但它有很多问题并且不完
  • 如果数组包含一个或多个相同值,则合并数组

    我有一个数组数组 a 1 2 3 3 4 5 6 7 8 8 9 9 10 我想合并包含一个或多个相同值的所有数组 所以 a 1 2 3 4 5 6 7 8 9 10 我正在努力寻找一种简洁的方法来解决这个问题 有任何想法吗 我相信这是正确
  • 在 RSpec 测试期间抑制控制台输出

    我正在测试在控制台上放置一些消息的类 包含 put p 警告等 我只是想知道在 RSpec 测试期间是否有能力抑制此输出 我压抑puts通过重定向在我的类中输出 stout到一个文本文件 这样 如果我出于任何原因需要查看输出 它就在那里 但
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS

随机推荐

  • 多个串联字段上的 Solr 分面

    我需要一种方法来获取两个组合字段名称的方面 为了向您展示我的意思 请看一下现在的查询 responseHeader status 0 QTime 16 params facet true indent true q productId 1
  • Spring和Jackson Json,用视图序列化不同的字段

    In a 以前的类似问题 https stackoverflow com questions 7578081 spring and jackson json serialising two different sets of fields
  • Google App Engine 和 404 错误

    我已经使用其他地方找到的提示在 GAE 上设置了一个静态网站 但无法弄清楚如何返回 404 错误 我的 app yaml 文件看起来像 url static files static 1 index html upload static i
  • 多重集、映射和哈希映射复杂度

    我想知道 STL 多重集 映射和哈希映射类的 Big O 表示法的复杂性 插入条目 访问条目 检索条目 比较条目 映射 集合 多重映射和多重集 这些是使用一个红黑树 http en wikipedia org wiki Red black
  • 安装了多个 PHP 版本的共享主机上的后台脚本

    我需要一种为图像管理脚本生成缩略图 使用 PHP5 的方法 并且遇到了一个问题 我的主机安装了多个版本的 PHP 4 和 5 并且 PHP4 设置为默认值 这意味着从 CLI 对 php 的任何调用都将运行 PHP4 我提出了以下作为我希望
  • 没有 for..in..do 的扩展计算表达式

    我所说的扩展计算表达式是指具有通过定义的自定义关键字的计算表达式定制操作 http msdn microsoft com en us library hh289709 aspx属性 当阅读有关扩展计算表达式 http files meetu
  • 错误:无法使用 bind_rows 组合

    我正在尝试读取多个 csv 文件并将它们合并为一个 所以我原来有 d lt list files path data full names TRUE pattern csv gt lapply read csv gt bind rows 我
  • 如何在foreach循环中每5次迭代后定义html标签

    我只是想知道如何定义 HTML 标签 br 在 foreach 循环中每 5 次迭代之后 这是我的代码 div class item main div class item a href title div class overlaid d
  • 对 r 中的索引对对数组进行子集化

    尽管我进行了搜索 但我找不到我的问题的直接答案 假设我有一个数组 vector1 lt c 5 9 3 vector2 lt c 10 11 12 13 14 15 result lt array c vector1 vector2 dim
  • 在 Sublime Text 中将多行文本列组合在一起

    假设我有 2 列 每列有 10 亿行 它们是这样开始的 Column 1 I said She said it said Column 2 you re amazing he s awesome enough already 我尝试突出显示
  • OpenAPI 缺少 FastAPI 应用程序中某些 Pydantic 模型的架构

    我正在构建一个 FastAPI 应用程序 其中有很多 Pydantic 模型 尽管应用程序工作得很好 但正如预期的那样 OpenAPI Swagger UI 文档没有显示所有这些模型下的架构Schemas部分 这是pydantic的内容sc
  • Spring Webflux 禁用登录

    让我简短地描述一下我现在面临的问题 我已经为 webflux 应用程序配置了 spring security 当我尝试访问不需要身份验证的路由时 我收到登录表单提示 路线是 swagger ui 它应该在没有任何登录表单或其他内容的情况下打
  • 在 TensorFlow 中运行具有不同批量大小的已保存模型的最佳方法是什么?

    下雨了TensorFlow 存储库中的 Cifar10 示例模型 https github com tensorflow tensorflow tree master tensorflow models image cifar10使用bat
  • 如何在泛型集合上创建扩展方法

    我有一个包含 FrameworkElements 的列表 我想创建一个名为 MoveToTop 的扩展方法 这一切要做的就是接受属于该列表一部分的项目并将其移动到列表的开头 我知道这可以在不使用扩展方法的情况下完成 但我希望将其作为扩展方法
  • 从不均匀分布的集合中删除项目

    我有一个网站 用户可以提交问题 每天零个 一个或多个 对其进行投票并每天回答一个问题 更多详细信息here https stackoverflow com questions 8600909 distribution among users
  • 获取静态初始化块以在 java 中运行而不加载类

    我有一些课程 如下所示 public class TrueFalseQuestion implements Question static QuestionFactory registerType TrueFalse Question pu
  • 我的航站楼里有啤酒:怎么办?

    Brew puts a picture of a tiny beer in my terminal 它是如何做到这一点的 我什至不知道 但我需要知道 因为我未来的所有命令行应用程序也必须在其输出中放入小图片 它可能只是一个 unicode
  • 为脚本标签指定 ID

    我遇到了一个场景script元素一个id属性可以轻松解决问题 然而 在阅读了有关script元素在w3学校 http www w3schools com TAGS tag script asp and 怪异模式 http www quirk
  • swipeRefresh 运行时替换 Fragment 无法正常工作

    我有片段 A 其中包括 SwipeRefresh 和 RecycleView 当用户单击 RecycleView 中的某个项目时 我替换一个新的片段 即 B mAdapter setOnItemClickListener new MyAda
  • Ruby App MVC 框架(非 Web)

    有人听说过用于应用程序 脚本的 Ruby MVC 框架吗 当 Rails 出现时 它是一个革命性的工具 因为它将 MVC 带给了广大 Web 开发人员 并第一次迫使他们使用设计模式和约定 我正在寻找类似的东西 但用于编写从 cron 或用户