ruby离开了轨道
有时候觉得我的公司是世界上唯一使用Ruby而不是Ruby on Rails的公司,Rails几乎成了Ruby的代名词。
我确定这不是真的,但是听到关于非Rails Ruby用法的一些故事会很有趣。
Ruby的巨大好处之一就是能够非常容易地创buildDSL。 Ruby允许您以自然语言的方式创build“业务规则”,这对于业务分析师来说通常很容易使用。 Web开发之外的许多Ruby应用程序都是为此目的而存在的。
我强烈推荐使用Googlesearch“ruby dsl”进行一些精彩的阅读,但是我想留下一个特别的post。 Russ Olsen撰写了一篇关于DSL的两篇博客文章 。 我看到他给出了关于DSL的介绍,这非常好。 我强烈推荐阅读这些post。
我还在Obie Fernandez的Ruby DSL上发现了这个优秀的演示 。 强烈推荐阅读!
我在工作中广泛使用Ruby,而不是Rails(甚至是Web)。
我的域通常是客户端Windows应用程序(wxRuby GUI)和脚本,自动化Excel,Internet Explorer,SQL Server查询和报告生成(win32ole COM自动化)。 我还使用sqlite,pdf-writer和gruff库进行各种数据pipe理和graphics生成任务。
Rails的成功对于Ruby来说是非常棒的,但是我同意Rails已经受到了如此多的关注,以至于Ruby在networking之外的价值经常被忽视。
我们主要是一个C ++商店,但是我们已经发现了几个Ruby被certificate非常有用的领域。 这里有几个:
- 代码生成 – build立几个DSL以从单个input文件生成C ++ / Java / C#代码
- 构build支持
- 脚本来从Visual Studio项目文件为unix生成Makefiles
- 用于构build项目和格式化巡航控制输出的脚本
- 用于运行我们的unit testing和格式化巡航控制输出的脚本
- 用于从命令行操作Visual Studio项目和解决scheme的脚本
- 集成testing – 我们可以使用Ruby比C ++更快,更清洁地完成testing
- QA的整个testing套件都是用Ruby编写的
Ruby基本上是我去工具的地方,它是有道理的。 这在很多地方都有意义。
Google Sketchup使用Ruby作为embedded式脚本语言。 您可以使用它来执行各种3Dbuild模和导入/导出任务。 脚本与免费版本一起工作,甚至还有不错的文档 。
Ruby用C ++编写的自制程序扩展程序完成了所有重要的像素处理工作。 我正在使用Python + numpy,但是在做艺术性的东西时 ,Ruby更有趣。 另外,好的image processing库相对缺乏或较less成熟,使我感觉不像是在重新发明轮子。 我对Rails一无所知,除了我听说过的,有一个模糊的概念是什么,实际上有一本书(未开启)
我们使用Watir (Ruby库)来testing我们的.net web应用程序。
看看Shoes ,这是一个简单的API,用于在Ruby中为新手程序员构buildGUI。
或者你可以用Ruby来制作音乐ala Giles Bowkett的始祖鸟。 Giles关于始祖鸟的介绍是有史以来最好的介绍之一。 我强烈推荐它。
RubyCocoa和MacRuby。 可能在不使用Rails的情况下制作完整的基于cocoa的GUI应用程序。 然后你也可以使用Interface Builder。
去年我参与了一个博物馆项目,使用了很多Ruby。 ( http:// http://ourspace.tepapa.com/home )
我花费大部分时间的部分是一个互动的地图。 在地板上的地图有传感器,所以当人们走在它上面时,灯会被触发,并在墙上显示图像或video和音轨播放。
这部分展品的所有控制代码都是ruby。 我写了C接口与ruby包装与地板传感器和灯光控制器沟通。 系统向MYSQL数据库查询要显示的媒体文件,然后告诉墙上的计算机通过UDP播放媒体。
这是整个展览中最可靠的部分。
ruby被用于展览的另一个主要部分,虽然我没有太多的关系。 大多数的graphics是在ruby中使用OpenGL接口,一些Cocoa和一个物理库的原型,然后移植到纯的Obj-C。
木偶和厨师:DevOps
在我到达之前的30个答案中,我没有看到木偶或厨师的提及。 Ruby似乎主宰了当前云自动化领域的工作,并且是这两大玩家的基础,扩展和模板语言。 它们主要用于分发服务器arrays和一般IT工作站pipe理的系统和应用程序configuration信息。
DevOps领域颇具Ruby意识。 今天,Perl有了竞争对手。 虽然一个非常简单的脚本通常仍然可以直接写入sh(1),
但是现在可能会用Ruby而不是Perl来完成一项复杂的任务。
我在工作中唯一使用Ruby的地方是使用Rails,但我想尝试Merb 。
除此之外,我在Ruby中做了很多小的实用程序 – 例如一个读取RSS提要并将新post导入到dabase的应用程序。
这很有趣,所以我也写了一些愚蠢的东西,只是因为它太快了。 昨天我写了一个应用程序来玩蒙蒂霍尔问题 100,000次,以帮助一个朋友说服她的教授,切换是正确的策略。
我几乎侮辱ruby是一个铁轨的事情。 CGI是最新的趋势,所有人都认为如果你知道perl,那么你必须这样做,只是因为你编写了CGI应用程序。 Ruby对我来说只是一种脚本语言,虽然不像Python那样成熟,所以我有些后悔不得不跳过它的一些箍筋和最近的变化,我仍然喜欢它并使用它。 虽然我在一家java商店工作,所以groovy是脚本语言的理想select,但我仍然在家里使用ruby,并丢弃不需要在工作中共享的脚本。
我正考虑从所有的嗡嗡声进入RoR,它是多么快速/简单,但在看过轨后,我什么都看不到什么是惊人的,甚至没有什么创新或快速的发展相对于其他任何其他框架。 我看到的唯一好处是我可以在ruby中编写代码,这很好,但是初始设置,服务器维护和扩展比较困难,从而重新抵消了ruby编码的乐趣。
我创build了一个演讲 – 巧合地命名为Off The Rails – 讨论基于Rack的Web应用程序:
https://github.com/alexch/Off-The-Rails
git repo包含Markdown格式的幻灯片和示例代码(以运行应用程序和中间件的forms)。 这是摘要:
Ruby on Rails是Ruby最stream行的Web应用程序框架。 但它不是唯一的! 如果您认为Rails太大,太自以为是,或者太想知道什么,那么您可能会很乐意了解在Rack上构build的新一代所谓的微框架。 而且由于Rails 3本身就是一个Rack应用程序,所以您不必放弃Rails来获得Sinatra路线或Grape API的好处。
这里有一些参考:
- 这个演讲在https://github.com/alexch/off-the-rails
- 耶胡达10最喜欢的事情关于Ruby
- 架
- 机架testing
- 机架客户端
- 西纳特拉
- 葡萄
- 拉斯维加斯
- 午休
- 重新运行
希望你觉得它有用!
我主要是一个Web开发人员,并且我学习了Ruby来使用Rails,但是我非常喜欢这种语言,所以我开始使用JRuby和Monkeybars在Ruby中开发桌面Swing应用程序。 我有能力胜任Java,但不太喜欢使用它,而Swing API太糟糕了,所以把Ruby放在首位是一个很大的胜利。
我们主要使用rails,但是我们有很多其他的非rails的ruby的东西 – 例如用于集中authentication用户的独立authentication守护进程的东西,以及一个运行任意数量的ruby进程来并行处理图像的“image processing服务器”。
哦,不要忘记好老耙:-)
Ruby也用于桌面应用程序。 尤其是使用JRuby开发Swing桌面应用程序。
我在工作中使用过Ruby
- 数据提取器,从二进制输出生成csv文件。
- 一个.ini文件生成器,将一个简单的语法变成一个重复的.ini格式。
- 一个简单的TCP / IP服务器,在testing期间作为客户系统的替身。
我们使用Ruby来实现我们的testing自动化软件。 这包括Selenium RC,WATIR和AutoIT的testing框架和驱动程序代码。
Ruby足够强大,可以创build与Selenium或WATIR等testing工具交互的综合应用程序,同时读取数据文件,与远程Windows UI进行交互,并执行接近透明的networking通信。 所有在Windows或Linux上运行。
整齐的语法使其成为新手和无经验的程序员阅读的理想select。 尽pipe其完全的OO特性使得这些程序员很容易从一开始就应用好(最近学到的)面向对象技术。
Ruby语法的灵活性也使得DSL的使用和创build变得更容易。 这允许技术不太专业的人得到启发,阅读并可能创build自己的testing。
我已经在需求不稳定的项目中使用Ruby来生成C#和T-SQL存储过程的代码。 数据模型用YAML文件编码,而.erb模板用于类和存储过程。 它还允许使用直接C#的更多DRY解决scheme,因为在代码生成器中可以将反复代码分解为单个方法。
在我工作的地方,我们使用Ruby来做一些不同的一次性types的批处理作业。 其中一个例子就是与亚马逊S3服务交互的工作。 当时,Ruby S3库可能是我们在短时间内启动和运行的最简单的一个。
我写了一个订单处理专家系统(请参阅DSL答案),将10万客户特定的perl转换成大约10K条ruby处理几十个客户。 根本没有Web组件,没有Rails。
我是一个webdriver用户。 由于rake,ruby被webdriver用来自动化构build过程。 有关详细信息,请参阅http://code.google.com/p/webdriver/
嘿,很好的问题。
我使用Ruby将Excel电子表格机场设施数据转换为用于android手机平台的sqlite3,同时为飞行员制作应用程序。
我使用Ruby与Sinatra比Rails简单得多。 我确实使用了Rails,但是发现它已经变成了一个怪物,尽pipe与Java可用的Web框架相比,Rails仍然令人惊叹。
然而,我喜欢的Ruby的主要特性是“eval”和“method_missing”,Rails在ActiveRecord中实际使用了这种方法,以便您可以使用惊人的“find_by-field-name-”查询。
我使用Ruby来处理大量的后端代码,因为我是唯一一个负责这样做的人,并且需要一个很好的干净的语言,这使我能够非常高效地编写代码。 我发现Ruby允许我比Perl和Python更容易。 其他人的里程可能会有所不同,但对我来说效果很好。
除此之外,我喜欢Sequel和Nokogiri的工作方式。 我也使用ActiveRecord一段时间从Rails分开。
我们使用一些Ruby进行文件操作,但还没有能够融入轨道。
我已经很多专业地使用Ruby来快速处理文件,如洗牌文件。 我是一样的,因为在使用Rails之前,我首先使用了Ruby。
在博尔德,每个月都会有一群优秀的Ruby用户。 这一点是有道理的–Ruby确实有一个存在,除了在Rails中的使用。 普通的Ruby用户确实存在,正在乞求关注,有整洁的东西显示,并可以在用户组会议上find对方。
他们也比那个在同一天遇见的Python小组有更好的披萨。 只能挑一个…
虽然我们在工作中有几个Rails应用程序,但是我们也使用Ruby来处理一些相当密集的非web事物。
我们有一个SMS传递守护进程,它从队列中提取消息,然后传递它们,以及其他应用程序可以调用的信用卡处理守护进程,以确保有一个中央审计跟踪。