在我看来,Rails在构建以网络为中心的应用程序时非常出色,例如Agile book或Basecamp项目管理系统中提供的Depot在线商店应用程序。这些应用程序的关键是它们的Web界面,Rails为您提供了快速,轻松,优雅地创建这些Web应用程序的工具。
但是如果你有一个带有命令行界面的应用程序,你想要添加一个前端呢?例如,想象一个处理第三方EDI文件的应用程序 - 它从FTP服务器获取它们,解析它们,将数据插入数据库并通过电子邮件发送报告。应用程序应该运行的时间表,应该生成哪些报告,谁应该收到电子邮件等等都在数据库中配置。虽然应用程序的要点是EDI文件的处理,并且您希望通过cron运行它,但您希望构建一个网页,以允许用户管理他们接收的报告,接收报告的频率,等
命令行应用程序和网页都需要访问数据库中的相同数据。他们应该能够共享模型和业务逻辑。如果命令行应用程序已经包含一个带有数据访问层的库,那么有没有办法在Rails中利用这个库?或者,相反,有没有办法在外部应用程序中重用Rails的模型和控制器?或者在这种情况下使用Rails作为Web框架没有意义吗?
答案 0 :(得分:4)
如果您只想抽象出以数据库为中心的应用程序的模型层,您可以随时将ActiveRecord库(和ActiveSupport)包含在常规ruby应用程序中。
答案 1 :(得分:2)
实际上,大多数rails应用程序都有一个Web界面和一个命令行界面 - 通过rake
。
经典示例是必须定期运行的批处理作业,不管是cron还是随时都可以运行。但也可以手动运行这些任务。
如果我是你,我会尝试在lib/tasks
中构建一些rake任务,以映射这些命令行命令。