我正在开发一个社交应用程序,并考虑使用 express.js/nodejs 代替我最初的选择 Sinatra/Ruby。
我最担心的是 Ruby 中有多少开源项目可以帮助您快速完成工作。第二个主要关注点是 express.js 的稳定性/成熟度和完整性。
欢迎任何反馈,评论。
最佳答案
希望这个答案能帮到你。这个周末我试着做类似的事情。作为 Rails 的长期支持者(在 Rails 3.2.1 相当出色之后,我决定在这个周末跳槽并切换到 Nodejs。作为一个普通的 JavaScript 编码器,我认为这会很有趣且具有挑战性。
我什至从 Peepcode 购买了一个 Nodejs 截屏视频。所以,我坐下来,启动 Textmate,开始一个简单的 nodejs 项目,然后使用 Twitter Bootcamp 进行调整,这个应用程序开始看起来很棒,恕我直言。
然后,我开始添加数据库支持。然后 BAM。事情很快就袭击了我。我必须找到一个非阻塞的 Postgresql 驱动程序。美好的。找到了一个。什么?我必须手动创建 SQL 查询?但我对 ActiveRecord 如此宠爱?好的, Node 似乎有 AR 类型的框架。但我使用的教程是针对 Express 的。但是等等,Nodejitsu 推荐了 Flatiron。好的,Flatiron 看起来很有希望。但是等等,我开始研究 Flatiron 用于数据管理的示例。他们称之为“资源丰富”?我发现了一个关于狼吃松鼠的数据管理示例? 拥有和属于许多的例子在哪里?如何告诉 Flatiron 我的 Notes 模型是多态的并且属于 Trips 和 Expenses?
我确定他们在那里,但我找不到。
但它会变得更好。射击。我以为我讨厌迁移,直到我不得不启动 pgAdmin 和/或 Navicat 来手动创建我的数据库。然后我不得不手动创建表......哦,废话。我搞砸了 pgAdmin 中的一个专栏。但它不会让我改变它!所以我不得不再次重新启动整个表的创建。啊。伙计,我现在缺少生成器和 rake db:migrate!
然后我意识到我花了整个周末(好吧,我只有很少的时间用于编码)而我所要展示的只是一个很棒的静态 HTML 页面,它是非功能性的。
关键是,如果你擅长 Rails,那么 Nodejs 将是一个重大转变。也许你喜欢这个?也许不会。
在周末结束时,我意识到了一些事情。我的新应用程序在 UI 上会很重,并且将向后端服务器来回发送 JSON。 Rails 提供了一个很好的工具带来做这件事。 Rails 非常乐意使用 JSON。事实上,我的应用程序将是通过 nginx 提供的静态 HTML 页面,Rails 将使用 Controller 驱动数据层。
如果您想在开发过程的每个部分从头开始,我的建议是学习 Express/Nodejs。如果您想构建自己的查询字符串。如果您想手动完成所有操作。也许你喜欢那样。也许你有让世界变得更容易的想法。也许您想使用 Tower.js 或 Flatiron.js 或其他一些 Nodejs 框架。
或者,也许你和我一样,想要完成一个该死的应用程序。然后使用 Rails。
关于javascript - 在 Sinatra 上使用 express.js 而不是 Ruby 的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037020/
我正在学习如何使用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
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类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
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
这似乎应该有一个直截了当的答案,但在Google上花了很多时间,所以我找不到它。这可能是缺少正确关键字的情况。在我的RoR应用程序中,我有几个模型共享一种特定类型的字符串属性,该属性具有特殊验证和其他功能。我能想到的最接近的类似示例是表示URL的字符串。这会导致模型中出现大量重复(甚至单元测试中会出现更多重复),但我不确定如何让它更DRY。我能想到几个可能的方向...按照“validates_url_format_of”插件,但这只会让验证干给这个特殊的字符串它自己的模型,但这看起来很像重溶液为这个特殊的字符串创建一个ruby类,但是我如何得到ActiveRecord关联这个类模型
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我试图在一个项目中使用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时
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits