草庐IT

ruby - 是否可以使用 MagLev for ruby​​ 构建生产 Web 应用程序?

coder 2025-05-12 原文

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




总的来说,我是 Rails 和 ruby​​ 的粉丝,可能会着手为金融机构构建企业应用程序。我真的很喜欢磁悬浮的想法,不知道是否值得考虑。我还没有找到太多关于 maglev 是否​​被用于生产中的信息,更不用说用于高安全性目的了。

有没有人使用 MagLev 成功部署过关键任务应用程序?如果是这样,您能否提供有关您的体验的详细信息并可能命名该应用程序?

最佳答案

TL;DR:我们即将在 MagLev 上发布一个生产应用程序。你应该等待。

我为长度道歉;我对此有很多断开连接的想法,我仍在尝试连接。

我的团队即将在 MagLev 上启动第一个生产应用程序。这是一条崎岖不平的道路,但我们非常有信心最终证明这是一个正确的决定。我在今年的一些 session 上谈论我们的经验,我很高兴更详细地谈论它,但这里有一个(长)概述。

您可能已经知道,GemStone 拥有支持金融行业公司的悠久而自豪的历史。我们主要是一家 Ruby 商店,我们开发金融应用程序。我们关心我们的数据,所以 GemStone 对我们来说是一个明显的选择。 MagLev 允许我们使用我们现有的 Ruby 知识和我们的大部分代码,并将我们的数据存储在 GemStone 中。这是(看似)完美的婚姻。

我们选择从一个小应用程序开始,它对我们的用户来说是新的,并且移动起来最容易且风险最低。我们选择了与托管结账平台相关联的发票展示应用程序。能够简单地持久化对象而不用担心映射或转换使开发变得非常快速和愉快,并且我们避免了许多与 ORM 和持久性相关的问题。我们计划继续将我们现有的其余应用程序转移到 MagLev。

也就是说,除非以下所有情况都为真,否则您应该等待:

  • 您是(或与之合作的)Ruby 专家,他们对语言及其实现足够熟悉,可以调查和修复实现细节,其中许多细节是用 Smalltalk 编写的。
  • 您是(或与)开发人员一起了解在 Smalltalk 中工作的细微差别,但通常是基于图像的环境。
  • 您能够非常熟悉 GemStone/S 平台、语言、部署机制和工具。
  • 如果遇到砖墙,您已准备好废弃所有内容并在 Smalltalk 中重新编写您的应用程序。 (我承认:我希望 MagLev 有时会完全掉下去,只是为了找个借口。)

  • 我们一直在处理一些问题。因为,对我们来说,上述所有内容都是正确的,所以我们继续了。我们经常解决以下每个“问题”。有时每天。
  • 回溯几乎不可能自己阅读,当您遇到许多异常时,您必须使用 GemStone Smalltalk 的命令行调试器。这里有一个学习曲线。
  • Ruby 库的兼容性……比您希望的要少。基本上,您可以指望大多数用纯 Ruby 编写的东西都很好。基本上任何使用 C 扩展而没有 ffi 的东西都被淘汰了。这是数量惊人的东西。过度使用元编程的库让 MagLev 感到困惑。这是 Rails 领域的很多事情。
  • 代码重新加载和迁移是手动的。当您更改磁盘上持久对象的类定义时,您必须手动管理加载新代码和迁移现有持久实例。

  • 综上所述,对我们帮助最大的是,我与大多数(所有?)在 GemStone 了解(并且曾经)了解 MagLev 的人是 friend 。他们对我们来说太棒了。 HPI 的学生在修复错误和帮助我们解决问题方面也做出了宝贵的贡献。

    关于我的团队,因为我拥有的团队基本上使这成为可能。我们是四个开发人员。我们每个人都有十多年的经验(我认为我们实际上都超过 12-15 岁)。我们中的一些人(至少是我)有十多年的 Ruby 经验。我们在 Smalltalk 方面有不同程度的经验,尽管我们没有人发布通过它赚钱的生产应用程序。我活跃于 Ruby 和 Smalltalk 社区(并且有点从前者“过渡”到后者)。

    我们的经历有点坎坷,但大多是愉快的。如果我当时知道我现在所知道的,我会再做一次。我希望我们在这方面的工作将帮助其他人在 future 做同样的事情。我将 MagLev 视为 future 的宝贵工具。

    关于ruby - 是否可以使用 MagLev for ruby​​ 构建生产 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16046238/

    有关ruby - 是否可以使用 MagLev for ruby​​ 构建生产 Web 应用程序?的更多相关文章

    1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

      我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

    2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

      总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

    3. Ruby 解析字符串 - 2

      我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

    4. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

      我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

    5. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

      类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

    6. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

      很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

    7. ruby-on-rails - rails : keeping DRY with ActiveRecord models that share similar complex attributes - 2

      这似乎应该有一个直截了当的答案,但在Google上花了很多时间,所以我找不到它。这可能是缺少正确关键字的情况。在我的RoR应用程序中,我有几个模型共享一种特定类型的字符串属性,该属性具有特殊验证和其他功能。我能想到的最接近的类似示例是表示URL的字符串。这会导致模型中出现大量重复(甚至单元测试中会出现更多重复),但我不确定如何让它更DRY。我能想到几个可能的方向...按照“validates_url_format_of”插件,但这只会让验证干给这个特殊的字符串它自己的模型,但这看起来很像重溶液为这个特殊的字符串创建一个ruby​​类,但是我如何得到ActiveRecord关联这个类模型

    8. ruby - 在 Ruby 中使用匿名模块 - 2

      假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

    9. ruby - 其他文件中的 Rake 任务 - 2

      我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

    10. ruby - 如何在 Ruby 中顺序创建 PI - 2

      出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

    随机推荐