红宝石开发环境

时间:2009-04-29 23:45:45

标签: ruby-on-rails ruby development-environment

在a)windows b)linux或c)mac中开发ruby是否更好?为什么?

编辑:

我之所以这样问是因为我听说在Windows中使用ruby在轨道上使用ruby时,在windows中开发ruby并不是那么稳定/好。 (不确定这是否属实)。

此外,David Heinemeier Hansson(Ruby on Rails的创建者)似乎正在使用Mac,因此最初的印象似乎是Ruby on Rails应用程序,而Mac则很顺利。

12 个答案:

答案 0 :(得分:25)

我强烈建议您不要在Windows上开发。为什么?首先,每次升级都会在Windows上出现很多问题,而且大多数gem或插件创建者都不使用windows,所以他们不关心windows而且不对它进行测试(有几个大牌)平坦的人说窗户不是他们的问题,这是你的问题)。你会发现* nix vs Windows问题会一次又一次地困扰你。路径名斜线,ssh实现中的细微差别,控制台和字体问题,rubygems,capistrano等......

一段时间后最终会发生什么事情,每当你必须调试“这只是在Windows上有问题吗?”时,你总是会在脑后发出这种声音。而那个小小的声音对你来说是一种代价。每天都会用掉一些电池。

Macs在前期美元方面更贵(可惜我没有)和Linux平台花费一两天试图让你的无线网络工作更昂贵的条款,但那些是一次性费用。使用Windows进行Rails开发的唠叨不安全是一项持续的成本。至少在社区开始拒绝那些并非真正跨平台的事情之前。

以黄瓜为例。由于某种原因,测试框架依赖于Windows中不可用的特定控制台配置。因此,要在Windows中使用它,您必须更改控制台中的字体并更改控制台中的代码页。否则字母“a”将从所有输出中消失。为什么?因为它适用于* nix系统并且为您提供漂亮的颜色(我认为这是一个巨大的缺陷,即使您忽略了窗口也是非常糟糕的设计选择)。

每次提起窗户问题时,你也会觉得那个在电梯里放屁的人。

我说这一切都是为了那些必须在他的开发平台上使用Windows的人。嘿,那味道是什么?

[后期编辑:Ruby在Windows上也慢了3倍。这将影响您始终运行测试的意愿并损害您的TDD反馈周期]

答案 1 :(得分:7)

无论你最舒服,都无所谓。我已经完成了这三件事。

我认为Windows有点不舒服,因为它不是基于unix的,CLI更笨拙。

(但是如果你使用像NetBeans这样的工具,你甚至不需要很多CLI)

答案 2 :(得分:4)

我建议在开发稍后将部署在Linux系统上的应用程序时不要使用Windows。如果您正在开发一个应用程序进行练习,Windows就可以了。

问题在于,如果你的目标是linux,那么你需要在你的开发机器上拥有一个完整的堆栈:一个web服务器,一个dbms,也许是memcached等等。虽然可以加载所有的在Windows上(我已经完成了),它将比在Linux机器上花费更长的时间,速度会慢一些,当某些东西不起作用时你会更难找到帮助。

此外,您可以在Windows上遇到gem和插件支持问题。例如\而不是/目录路径和其他古怪。虽然rubyists会尝试提供帮助,但Windows支持有时是有限的,因为大多数RoR工作都是在Mac或Linux机器上完成的。 例如,Capistrano在Windows上运行时遇到了问题(现在可能已修复)。

作为替代,您可以将Windows用作桌面计算机,但使用Linux计算机作为开发服务器来运行应用程序。任何旧电脑都可以运行linux。使用samba从Windows机器远程访问和编辑文件。 linux机器不需要显示器,你只能远程使用它。

只需更改应用的配置/环境/ development.rb即可包含

config.action_controller.consider_all_requests_local = true

因此您可以在Windows计算机上查看浏览器中的堆栈跟踪。

此致

拉​​里

答案 3 :(得分:3)

Ruby on Rails在所有平台上运行良好,但工具支持各不相同。例如,TextMate是Rubyists中最喜欢的编辑器,它只是Mac。您将能够在TextMate中找到许多有助于使用RoR的有用工具,因此最好在Mac上进行RoR开发。

我自己使用Mac和Linux。

答案 4 :(得分:1)

基于Unix的系统将为您提供一个耐用的路径,因为所有宝石在这些系统上都可用/可编译,这在Windows机器上并不那么容易。这在Windows上并非不可能,但是你会花更多的时间让它工作而不是在某些情况下工作而不是工作。

在那些Unix系统中,我首选的是Mac,它拥有所有的Unix功能以及你的linux系统可能缺少的所有界面细节,当然,如果没有我每天的TextMate,我就无法生存,所以Mac就是。

答案 5 :(得分:1)

1981年,我在早期的Unix系统上开始担任程序员。到1995年我一直是一个纯粹的Unix人。然后'东西'发生了,(企业所有权),Windows进入我的生活。

所以2007年我开始学习纯粹的Windows版RoR。我部署在Joyent上,这是Solaris。我已经成功开发了两个在Windows上开发并在Solaris / Apache / Mongrel上部署的大型应用程序,没有发生重大事故。

我唯一记得的Windows问题是我必须强制将文件系统读写写入二进制模式以修复“开发”与“部署”问题。

老实说,我没有看到在Windows上开发和在Unix上部署有任何问题。但我有一个广泛的Unix背景,我不确定如果我不知道Unix,故事会是一样的。

另外,我只会处理我为自己的业务构建的RoR应用程序。我永远不需要构建任何其他RoR应用程序,我永远不会开发任何插件,永远不必接管另一个项目,从来没有任何人INSIST我包含的东西只能用于我的Windows开发环境不能很好的东西等等......

我会这样说:

如果您负责为您的雇主开发Web应用程序,并且该雇主是基于Windows的,则不应该阻止您将RoR视为平台。该应用程序必须由第三方部署,除非您的雇主足够大并且该项目足够重要以保证内部Unix系统。

因此,如果您了解有关Unix的SQUAT,那么您可能需要一些帮助。如果您与第三方Rails主持人一起,请查看他们的支持论坛,确保有人愿意并且能够通过任何部署/设置和维护问题与非Unix人员交谈。

我将在Joyent上给你一个例子,如果我想运行迁移,我必须完成他们的数据库GUI,登录数据库,然后'执行'命令。好的,所以我得到一个简单的text_field,输入目的地为Unix shell的输入,即:

cd / user / myhome / sites / mysite&& rake db:migrate RAILS_ENV = production

如果我没有Unix背景,那可能就不那么容易理解了。

答案 6 :(得分:1)

从Ruby 1.9.2和Rails 3.2开始,Windows对于自动测试和spork来说要慢得多(一个完整周期平均花费约15秒,相比之下Linux在同一个项目上仅需几秒钟),但我喜欢更好的gui中心git工具和功能(TortoiseGit,WinSCP)以及其他因为我对Windows更加熟悉。我已经证实我需要的基本功能是在两个平台上工作,所以我发现与速度相比,破损是一个较小的问题。

答案 7 :(得分:0)

无关紧要,如果您是纯粹主义者,那么您的开发环境应尽可能与您的生产环境紧密匹配,以及操作系统和Ruby和Rails的版本。但实际上它并不重要。

答案 8 :(得分:0)

有些宝石可以在Mac上使用,但不适用于某些类型的Linux(例如我上次尝试时使用的gitjour)。

使用Mac可能有好有坏,这取决于您是否想知道您开发的任何内容都可以在任何其他操作系统上运行。

答案 9 :(得分:0)

我已经在OSX和Linux(Ubuntu)上完成了轻轨开发,我发现差异几乎察觉不到(就ruby和rails来说......显然桌面环境在两个操作系统之间有很大差异) )。

正如其他人所说,大多数ruby / rails教程,宝石,插件等都面向Unix类型的系统,所以我认为可能会有一些烦人的小问题试图在Windows中进行ruby / rails开发,除非当然你正在使用IronRuby。 : - )

为Rails开发设置Unix环境的一个简单的替代方法是运行一个更易于使用的Linux发行版,如VMWare,VirtualBox,VirtualPC等虚拟化软件下的Ubuntu或Fedora等。

答案 10 :(得分:0)

我同意许多以前的帖子,Windows上的Rails可能是一个问题。很多人为Rails开发的情况就是在Mac或Linux上,因此找不到Windows漏洞,这对插件来说尤其如此。

Rails的一个问题是IDE。 Mac上的TextMate似乎是一个受欢迎的选择,但Linux和Windows选项相当分散。通常我不担心这个,但我发现当你有IDE支持时,Rails变得更易于管理。一般来说,有很多文件位于一个相当复杂的目录结构中,所以有一个IDE,可以让你轻松找到你想要的文件,这是一个非常好的生产力提升。

您可能需要考虑的另一件事是您的部署环境。例如,人们可能会在Linux服务器上部署Rails应用程序。在这种情况下,您可以通过在OS X上进行开发来绕过错误,但不幸的是,当您部署新软件时,这些错误将会突然出现。这是你想要调试代码的最后一个地方。当然,您应该首先在暂存环境中测试您的代码,但人们经常会跳过此步骤。

答案 11 :(得分:0)

在寻找这个问题的答案时,由于在Ruby开发过程中总是不得不破解我的工作方式,我可以说如果你有选择,可以使用Linux或Mac。我已经正式开始使用Ubuntu 9.04,这就是原因:

1)不能做任何ssh之类的东西,比如使用Capistrano,vlad,为rubyforge创建宝石等等。你可以使用cygwin做这些事情,但是使用cygwin和windows工作的一切都是如此痛苦。

2)最后一根稻草是试图在rails应用程序中启动后台任务时才意识到windows无法进行fork进程....甚至没有为cygwin打扰这个,只是切换到Ubuntu所以我不必继续解决这些问题。

Ubuntu 9.0.4虽然很热,但印象非常深刻,所以它可能不会那么糟糕。