红宝石脱轨


114

有时,我的公司是世界上唯一使用Ruby的公司,但没有使用Ruby on Rails,以至于Rails几乎已经成为Ruby的代名词。

我敢肯定这不是真的,但是听到一些有关非Rails Ruby使用的故事会很有趣。

Answers:


51

Ruby的巨大好处之一就是能够非常轻松地创建DSL。Ruby允许您以自然语言的方式创建“业务规则”,通常对于业务分析师来说足够容易使用。为此,存在许多Web开发之外的Ruby应用程序。

我强烈建议您使用Googling的“ ruby​​ dsl”阅读一些出色的文章,但我想特别留给您一个帖子。Russ Olsen 在DSL上写了一个由两部分组成的博客文章。我看到他在DSL上作了演讲,这非常好。我强烈建议阅读这些文章。

我还发现Obie Fernandez在Ruby DSL上的出色演示。强烈建议阅读!


4
Ruby中的数字用户线?

5
领域特定语言
Sixty4Bit'2

18

我在工作中广泛使用Ruby,但都不是基于Rails(甚至是Web)的。

我的域通常是客户端Windows应用程序(wxRuby GUI)和脚本,它们可以自动执行Excel,Internet Explorer,SQL Server查询和报告生成(win32ole COM自动化)。我还将sqlite,pdf编写器和gruff库用于各种数据处理和图形生成任务。

Rails的成功对Ruby来说是巨大的,但是我同意Rails受到了如此多的关注,以至于Ruby在网络之外的价值常常被忽视。


17

我们主要是C ++商店,但是我们发现Ruby在许多领域都非常有用。这里有一些:

  • 代码生成-构建多个DSL,以从单个输入文件生成C ++ / Java / C#代码
  • 建立支持
    • 脚本以从Visual Studio项目文件为Unix生成Makefile
    • 用于构建项目和格式化Cruise Control输出的脚本
    • 用于运行单元测试和格式化Cruise Control输出的脚本
    • 用于从命令行操作Visual Studio项目和解决方案的脚本
  • 集成测试-我们可以使用Ruby比C ++更快,更干净地进行测试
  • QA的整个测试套件都是用Ruby编写的

基本上,Ruby是我在有意义的地方使用的工具。在很多地方都有意义。


1
您应该认真考虑使用CMake为Unix(Makefiles)和Windows(Visual Studio)生成构建文件。
JesperE'

13

Google Sketchup使用Ruby作为嵌入式脚本语言。您可以使用它来执行各种3D建模和导入/导出任务。该脚本可用于免费版本,甚至还有不错的文档


嗯,有趣。我真的应该尝试花一些时间来玩Sketchup。
JesperE

9

使用C ++编写的带有Homebrew扩展名的Ruby为我的摄影处理提供了所有繁重的像素推动。我当时使用的是Python + numpy,但是当做一些艺术作品时,Ruby会更有趣。同样,相对缺乏或成熟程度较低的良好图像处理库也使我不太喜欢重新发明轮子。除了对Rails的了解外,我一无所知,对它的含义一无所知,并实际上有一本书(未打开)





6

RubyCocoa和MacRuby。无需Rails即可制作完整的基于Cocoa的GUI应用程序。然后,您也可以使用Interface Builder。


6

去年,我参与了一个博物馆项目,该项目使用了很多Ruby。(http:// http://ourspace.tepapa.com/home

我大部分时间都花在的部分是交互式平面图。地板上的地图具有传感器,因此当人们在其上行走时,会触发灯光并在墙上的显示中播放图像或视频以及音轨。

展览这部分的所有控制代码都是红宝石。我用红宝石包装纸编写了C接口,以便与地面传感器和照明控制器进行通信。系统在MYSQL数据库中查询要显示的媒体文件,然后告诉墙上的计算机通过UDP播放媒体。

这是整个展览中最可靠的部分。

Ruby被用于展览的其他主要部分,Wall,尽管我与此并没有多大关系。在移植到纯Obj-C之前,大多数图形都是使用OpenGL界面,一些可可粉和一个物理库在ruby中进行原型制作的。


6

木偶和厨师:DevOps

在我到达之前的30个回答中,我没有提到木偶厨师。Ruby似乎主导着云自动化的最新工作,并且是这两个主要参与者的基础,扩展和模板语言。它们主要用于分发服务器阵列和常规IT工作站管理的系统和应用程序配置信息。

DevOps的领域是相当红宝石感知。如今,Perl拥有竞争对手。尽管通常仍然可以直接为sh(1),复杂的任务直接编写一个非常简单的脚本,但现在可以使用Ruby而不是Perl来完成。


5

我在工作中使用Ruby完成的唯一网站是使用Rails,但我想尝试Merb

除此之外,我在Ruby中做了很多小的实用程序-例如,一个读取RSS feed并将新帖子导入到dabase中的应用程序。

这很有趣,所以我也写一些愚蠢的东西,因为它太快了。昨天我写了一个应用程序,可以播放100,000次Monty Hall问题,以帮助一位朋友说服她的教授切换是正确的策略。


1
嘿,教授应该能够理解该游戏背后的纯粹逻辑,而无需在那里进行模拟。
vava

我很想看看您的算法。
maček

如果我理解正确的话,Merb几乎已经被吸收-或至少是杂交受精,或任何您想称呼的东西-被Rails 3吸收了。–
Andy

4

我几乎侮辱了红宝石是一种无稽之谈。就像当CGI是最新趋势时一样,每个人都认为,如果您知道perl,那么一定要这么做是因为您对CGI应用程序进行了编程。Ruby对我来说只是一种脚本语言,尽管还不如python成熟,所以我有点后悔不得不跳过它的某些方面和最新变化,但我仍然喜欢并使用它。尽管我在Java商店工作,因此groovy是脚本语言的理想选择,但我仍然在家中使用ruby并丢弃不需要在工作中共享的脚本。

我一直在考虑从所有嗡嗡声入手RoR,以及它有多快速/简单,但是在浏览Rails之后,我看不到任何令人惊奇的东西,甚至与任何其他东西相比,它的发展都没有什么令人惊奇的,甚至一点点创新或快速的框架。我看到的唯一好处是我可以用ruby编写代码,这很好,但是初始设置,服务器维护和扩展更困难,因此重新抵消了使用ruby编写代码的乐趣。


4

我创建了一个演示文稿(恰好名为Off The Rails)来讨论基于Rack的Web应用程序:

https://github.com/alexch/Off-The-Rails

git repo包括Markdown格式的幻灯片和示例代码(以正在运行的应用程序和中间件的形式)。这是摘要:

Ruby on Rails是Ruby最受欢迎的Web应用程序框架。但这不是唯一的一个!如果您认为Rails太大,太自以为是或什么都不是,那么您可能会很高兴了解基于Rack构建的新一代所谓的微框架。而且由于Rails 3本身就是Rack应用程序,因此您不必为了获得Sinatra路由或Grape API的好处而放弃Rails。

这里是一些参考:

希望你觉得它有用!


4

我主要是Web开发人员,并且我学习了Ruby以使用Rails,但是我非常喜欢这种语言,以至于我开始使用JRuby和Monkeybars在Ruby中开发桌面Swing应用程序。我精通Java,但是不太喜欢使用它,而且Swing API太可怕了,因此将Ruby放在首位是一个巨大的胜利。


3

我们主要使用Rails,但我们还有很多其他非Rails的ruby东西-例如,用于用户集中身份验证的独立身份验证守护进程,以及运行任意数量的ruby进程并行处理图像的“图像处理服务器”。

哦,别忘了老Rake :-)


3

Ruby也用于桌面应用程序。尤其是使用JRuby开发Swing桌面应用程序。


3

我在工作中使用过Ruby

  • 数据提取器,从二进制输出生成csv文件。
  • .ini文件生成器,将简单的语法转换为重复的.ini格式。
  • 一个简单的TCP / IP服务器,在测试期间充当客户系统的替身。

3

我们使用Ruby来实现我们的测试自动化软件。这包括用于Selenium RC,WATIR和AutoIT的测试框架和驱动程序代码。

Ruby足够强大,可以创建可以与Selenium或WATIR等测试工具进行交互的综合应用程序,同时可以读取数据文件,与远程Windows UI进行交互并执行近乎透明的网络通信。全部在Windows或Linux上运行。

简洁的语法使其非常适合新手和没有经验的程序员阅读。尽管它具有完全的OO性质,但使这些程序员从一开始就很容易应用良好的(最近学习的)OO技术。

Ruby语法的灵活性还使DSL的使用和创建更加容易。这使技术含量较低的人员可以调用,阅读并可能在其中创建自己的测试。


并非所有的宝石在Windows上都能运行良好。根据我的经验,Linux是运行ruby的更加流畅的环境。
僵尸

3

我已经在需求不稳定的项目中将Ruby用于C#和T-SQL存储过程的代码生成。数据模型被编码在YAML文件中,.erb模板用于类和存储过程。与直接使用C#相比,它还允许使用更多的DRY解决方案,因为可以将重复代码分解为代码生成器中的单个方法。


3

在我工作的地方,我们使用Ruby来完成许多不同的一次性类型批处理作业。其中一个示例是与亚马逊的S3服务进行交互的工作。当时,Ruby S3库可能是最简单的库,对于我们来说,它可以在短时间内启动并运行。


3

我编写了一个订单处理专家系统(也请参阅DSL答案),将10万行客户特定的perl转换为约1万行红宝石处理数十个客户的行。完全没有Web组件,也没有Rails。



3

嘿,好问题。

我使用Ruby在为飞行员制作应用程序时将Excel电子表格机场设施数据转换为android手机平台的sqlite3。


3

我将Ruby与Sinatra一起使用,这比Rails简单得多。我确实使用过Rails,但只是发现它变成了一个怪物,尽管与Java可用的Web框架相比,Rails仍然很棒。

但是,我喜欢的Ruby的主要功能是“ eval”和“ method_missing”,Rails实际上在ActiveRecord中使用了它们,以便您可以使用惊人的“ find_by-field-name-”查询。


3

我将Ruby用于许多后端代码,仅仅是因为我是唯一一个需要这样做的人,并且需要一种简洁的语言来使我变得非常有生产力,并且编写易于维护的代码。我发现Ruby使我比Perl和Python更容易做到这一点。其他人的里程可能会有所不同,但对我来说效果很好。

除此之外,我喜欢Sequel和Nokogiri的工作方式。我还将ActiveRecord与Rails分开使用了一段时间。



2

我已经非常专业地使用Ruby作为快速脚本来处理诸如混排文件之类的事情。我的使用方式与之前接触Rails之前先使用Ruby的方式相同。


2

在Boulder中,有一群优秀的Ruby用户每月聚会一次。提出了这一点-Ruby在Rails中的使用确实存在。普通的Ruby用户确实存在,正在寻求关注,展示了一些整洁的东西,并且可以在用户组会议上找到彼此。

他们也比Python组的披萨要好,Python组也于每月的同一天见面。只能选一个...


1
是的,但是Python组的Py更好!(笑话,我知道,我知道...)
dguaraglia

好笑,我忘了笑!8P
DarenW,

2

虽然我们确实有几个Rails应用程序在工作,但我们也将Ruby用于一些相当密集的非Web应用程序。

我们有一个SMS传递守护程序,它从队列中提取消息然后传递它们,还有其他应用程序可以调用的信用卡处理守护程序,这确保了中央审核跟踪。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.