有时我觉得我的公司是世界上唯一使用Ruby而不是Ruby on Rails的公司,以至于Rails几乎已成为Ruby的代名词.
我确定这不是真的,但是听到一些关于非Rails Ruby使用的故事会很有趣.
Ruby的巨大优势之一是能够非常轻松地创建DSL.Ruby允许您以自然语言的方式创建"业务规则",这通常很容易让业务分析师使用.为此目的,存在Web开发之外的许多Ruby应用程序.
我强烈推荐Googling"ruby dsl"获得一些优秀的阅读,但我想特别留下一个帖子.Russ Olsen撰写了一篇关于DSL的两篇博客文章.我看到他在DSL上做了一个演示,这非常好.我强烈推荐阅读这些帖子.
我还发现了Obie Fernandez对Ruby DSLs的精彩演示.强烈推荐阅读!
我在工作中广泛使用Ruby,而且没有一个是Rails(甚至是web).
我的域通常是客户端Windows应用程序(wxRuby GUI)和脚本,自动化Excel,Internet Explorer,SQL Server查询和报告生成(win32ole COM自动化).我还使用sqlite,pdf-writer和gruff库来进行各种数据调整和图形生成任务.
Rails的成功对Ruby来说非常有用,但我同意Rails已经得到了如此多的关注,以至于Ruby在网络之外的价值经常被忽视.
我们主要是一家C++商店,但我们发现Ruby已被证明非常有用.以下是一些:
代码生成 - 构建多个DSL,从单个输入文件生成C++/Java/C#代码
构建支持
脚本从Visual Studio项目文件生成用于unix的Makefile
用于构建项目和格式化Cruise Control输出的脚本
用于运行我们的单元测试和格式化Cruise Control输出的脚本
用于从命令行操作Visual Studio项目和解决方案的脚本
集成测试 - 我们可以使用Ruby比使用C++更快更干净地完成测试
QA的整个测试套件都是用Ruby编写的
Ruby基本上是我的工具,它有意义.它在很多地方都很有意义.
Google Sketchup使用Ruby作为嵌入式脚本语言.您可以使用它来执行各种3D建模和导入/导出任务.脚本与免费版本一起使用,甚至还有不错的文档.
使用C++编写的带有自制扩展的Ruby可以完成所有重要的像素处理我的摄影处理.我使用的是Python + numpy但是在做artsy时,Ruby更有趣.此外,良好的图像处理库的相对缺乏或较不成熟使我感觉不像我重新发明轮子.我对Rails一无所知,除了我听说过它,它有一个模糊的想法它是什么,并且实际上有一本书(未开封)
我们使用Watir(Ruby库)来测试我们的.net Web应用程序.
查看 Shoes,一个用于在Ruby中构建GUI的简单API,面向新手程序员.
或者你可以使用Ruby制作音乐ala Giles Bowkett的始祖鸟.该演讲由贾尔斯关于始祖鸟是有史以来最好的演讲之一.我强烈推荐它.
RubyCocoa和MacRuby.可以在没有Rails的情况下制作完整的基于Cocoa的GUI应用程序.然后你也可以使用Interface Builder.
去年我参与了一个使用了很多Ruby的博物馆项目.(http:// http://ourspace.tepapa.com/home)
我花费大部分时间的部分是交互式地板图.地板上的地图有传感器,所以当人们走路时,灯会被触发并在墙上显示图像或视频和音轨.
这部分展品的所有控制代码都是ruby.我用ruby包装器编写了C接口,以便与地板传感器和照明控制器进行通信.系统向MYSQL数据库查询要显示的媒体文件,然后告诉墙中的计算机通过UDP播放媒体.
这是整个展览中最可靠的部分.
Ruby被用于展览的另一个主要部分,即Wall,尽管我与此没什么关系.在移植到纯Obj-C之前,大多数图形都是使用OpenGL接口,一些Cocoa和一个物理库的ruby原型.
在我到达之前的30个答案中,我没有看到Puppet或Chef的提及.Ruby似乎主导了当前云自动化的工作,并且是这两大玩家的基础,扩展和模板语言.它们主要用于分发服务器阵列的系统和应用程序配置信息以及一般IT工作站管理.
该DevOps的领域是相当红宝石感知.今天,Perl有一个竞争对手.虽然一个非常简单的脚本通常仍然可以直接为sh(1),
复杂的任务编写,但现在可能在Ruby而不是Perl中完成.
我在Ruby上工作的唯一站点是使用Rails,但我想尝试Merb.
除此之外,我在Ruby中做了很多小实用程序 - 比如一个应用程序,它读取RSS提要并将新帖子导入dabase.
它很有趣,所以我也写了一些愚蠢的东西,因为它太快了.昨天我写了一个应用程序来玩Monty Hall问题 100,000次,以帮助一位朋友说服她的教授说切换是正确的策略.