`
seamon
  • 浏览: 22509 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
19c4d30c-d52a-3cc5-b233-a4a7d92b5798
rails3项目解析
浏览量:19586
社区版块
存档分类
最新评论

rails3项目解析之5——rails on windows

阅读更多
上一篇:rails3项目解析之4——异步和定时任务


序:本来不想写这篇,我知道在rails界,大家一直都是很鄙视在windows上做rails的象我一样的开发者。但是这几天连续看到仍然有人在不停地发帖询问rails on windows的问题。这个解决方案我已经在本系列第2篇末尾简单地写了一段,估计看到的人不多。所以我就干脆给扩成一篇,可能会让一些人少走些弯路,顺便也给我的系列充个数。ubuntu和mac上做开发的就不用看了。谨以此篇,献给仍然工作在windows上的被鄙视者。在本篇被成功投隐之前,请尽快观看。


我天朝(面对北京方向,抱拳拱手)泱泱大国,以诚信为本。在目前的环境下,windows确实是最流行最好用最容易和别人沟通的操作系统。如果有人和我一样,除了开发rails,还需要写doc、ppt并且要和别人互通有无,需要用太多只能跑在win甚至IE上的网银来付款划账,需要在开发之余玩玩CS等游戏,需要安装个最新版的QQ跟美女打情骂俏,尤其是,多年来的使用习惯确实不想更换。那么恭喜你,你不要听他们让你安装ubuntu、买个macbook、再装个虚拟机的诸多建议。那是他们霸权主义的个别人亡我之心不死,纯粹是不负责任无中生有空穴来风别有用心的恶毒攻击,在向他们表示不满抗议强烈谴责严正交涉并深表遗憾之余,接着情绪稳定地用你的windows好了。大不了花点精力多配置一下。

我的环境:windows 7 sp1 32bit ultimate 英文版(我正版我脚傲),XP也差不多。server系列没用过,请自行摸石头过河。

1、ruby和编译环境

请访问一个不存在的网站 rubyinstaller.org,下载上面的ruby-1.8或ruby-1.9的7-zip压缩包和devkit。

1.1 ruby安装很简单,解压7-zip,放置到你自己喜欢的目录,如D:/xxx/ruby,在系统环境变量的path中,添加“D:/xxx/ruby/bin”,使得ruby环境可用。

1.2 安装devkit。按照rubyinstaller上的安装说明,两三个命令之后,即可安装完毕。

2、基础组件和服务

2.1 mysql,去mysql官网下载windows版的,安装或直接解压,即可。

安装完mysql后,进入D:/xxx/ruby/bin,运行命令建立符号连接:

mklink libmysql.dll D:/xxx/mysql/lib/libmysql.dll


注意,windows下的link命令和linux ln的参数正好相反,第一个参数是符号连接名称,第二个参数是目标文件路径。以致于我现在无论在哪个操作系统上做符号连接,都需要很深沉地思考几分钟到底这次按什么顺序。

2.2 在windows上推荐使用apache作为php解析器和前端proxy,因为nginx在windows上使用起来还有些不太方便,不如apache一切都很成熟,好在反正是开发环境,那点效率也感觉不出来。用apache作proxy的原因,是为了有时需要在本地测试和域名相关的应用,就需要用apache做一下proxypass。

2.3 redis官方没有提供windows版的,但请放心,请相信一定会有比我们更闲得蛋疼的老外早就为我们准备好了这一切。请访问github.com/dmajkic/redis/downloads下载redis for windows,这个迁移版紧跟redis官方版本,时刻保持更新,很给力。如果还不满足,可以来这里github.com/rgl/redis下载setup包,将redis安装成windows服务自动启动。

2.4 mongodb比较厚道,官网就提供了原生的windows版,下载了直接安装就行了。

2.5 版本管理,用git的话,可以到这里code.google.com/p/msysgit/downloads/list下载msysgit,用起来也一样。只是在跑rspec测试的时候输出有点乱码的问题比较头疼,始终解决不了,只好假装看不见,只找哪个文件哪一行出错就行了。

2.6 sqlite的话,官网上也有win版的,下载了解压到指定目录,再按照上面的方法添加符号连接到windows系统目录下即可。

2.7 控制台的彩色输出,可以用ansicon,就可以在控制台里看到颜色了。在看rails s的log,还有rspec测试的时候,赏心悦目。

2.8 ssh界面。可以用putty,结合putty connection manager,就可以多窗口管理多台linux服务器,而且支持复制粘贴、utf-8和彩色输出。

3、安装gem

加上devkit之后,你的ruby中便具有了一个mingw32的本地编译环境,而且这个本地编译环境是自动调用的。只有在你要安装的gem需要本地编译时,才会调用devkit。

3.1 象nokogiri等需要编译的普通gem,都无须人工干涉,可自动搞定。

3.2 mysql2的安装,需要手动指定一下mysql的安装目录:

gem install mysql2 -- --with-mysql-dir=D:/xxx/mysql


3.3 rmagick,需要先下载安装imagemagick的dll版本,然后安装gem时需手动指定:

CPATH=D:/xxx/imagick/include LIBRARY_PATH=D:/xxx/imagick/lib gem install rmagick


其它的好象就没有什么需要特别指定的了,如果有我没有接触过的gem,可参照上面的思路,根据打印出来的编译错误,加上放狗,配合解决。

迄今为止,只有一个gem我没有安装上,那就是SystemTimer,因为它要调用unix底层的signal机制,而这个是mingw中确实没有的。不过好在还可以安装另一个stub的gem,ghazel-SystemTimer,使用ruby自带的timeout,反正是测试环境,能跑就行。如果要彻底解决这个问题,除非哪天rubyinstaller把mingw换成cygwin。

4、编辑器

推荐使用aptana。netbeans 7之后貌似是官方就不再支持ruby了,更何况我一直都没有用过netbeans。每出一个netbeans的新版本,我都会试一下,然后再回来重新用我的aptana。

最新的aptana3支持rails3,基本的功能一应俱全,而且象代码提示这样的功能也正在完善之中。总体感觉是越来越
好用了。而且它被人收购之后开发进度一直很活跃,前景还是不错的。

其它的rails编辑器还有很多,你可以根据自己的爱好去选择。我一直都用的是aptana,感觉挺顺手,也从来没想换。至于你用不用,我反正是用了。



5、速度

速度可能是rails on windows的永远的痛。随便敲一个rake命令都得按分钟来计算。启动服务也是一样。我也专门拿出一天的时间去找过国外的社区,看他们有没有解决方案。结果很遗憾,除了一大堆人在那里狂喊sooooooo slowwwwwwww之外,仍然没有根本的解决办法。我也在rails启动的每一个环节都加了timer,想看看到底是哪儿造成了速度的瓶颈,最后得出结论是,所有只要涉及到ruby代码的地方,都是瓶颈。fast_require也试过了,暂时还有很多问题,放弃。我甚至把所有的rails开发环境都放到了一个ramdisk上,速度仍然没有改观,于是我就相信了这个奇迹。

不过,rake命令并不是天天运行,rails s也不会时常重新再来一次,rails c有reload!,可以解决大部分问题。最后就只剩下一个,rspec测试。如果每次跑rspec都要一两分钟,我肯定就格式化windows,装ubuntu了。

还好,我们仍然有spork。

spork跑一个drb服务,预先加载好环境,rspec的时候会去调用它,spork默认会起两个provider,每跑一个rspec命令就会消耗一个,被消耗的那个provider会马上重新启动。这样的话,跑完一个rspec会有发现错误并修改的时间,而且在此期间你还有另一个provider可用,于是,这最后困扰我们的问题也解决了。经实际使用,每个rspec命令的预加载时间也就是几秒钟,和其它平台在一个数量级上,完全可以承受。

还有一个小问题,如果你用了spork,同时又用了factory_girl_rails,那就会造成model和factory的preload,导致你对model和factory的修改不会立即生效。在官方没有推出解决方案之前,可以在Gemfile中对factory_girl_rails加入:require => false,然后在Spork.each_run里require 'factory_girl_rails',即可搞定。

6、缺点

除了上面提到的控制台乱码,还有SystemTimer,最大的缺点就是慢,对于那些无可逃避的慢,就只能稍等一会了。好在我们无论谁在上班的时候都会开着QQ,听着音乐,吃着火锅还唱着歌,也不会在乎在速度上一天多浪费的这几分十几分钟。何况你也可以趁此机会休息一下,照顾一下QQ上弹出的无数窗口。记得有同事在ubuntu上专门安装了个小插件每隔一段时间就锁屏提示休息几分钟,如果他用windows,完全就可以节省下这个插件了。

想要享用windows带来的其它便利,肯定就要忍受随之而来的诸多不便。收之桑榆必会失之东隅,这是亘古不变的人生哲理。世上永远不存在完美,我想这个道理在你刻骨铭心的初恋情人离你远去的那一刻,你就应该明白了。
  • 大小: 162.1 KB
分享到:
评论
1 楼 Javaloverlover 2012-11-14  
编辑器似乎rubymine不错

相关推荐

    Ajax on Rails (PPT)

    ### Ajax on Rails 知识点解析 #### 一、引言 在当今的Web开发领域,Ajax技术已经成为了提升用户体验的重要手段之一。Rails作为一种高效、优雅的Web开发框架,与Ajax技术结合能够创造出功能强大且易于维护的应用...

    Web开发敏捷之道-应用Rails进行敏捷Web开发 pdf

    《Web开发敏捷之道——应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。该书涵盖了从初学者到高级开发者所需的各种知识,旨在帮助读者掌握敏捷开发...

    Pragmatic.Bookshelf.Agile.Web.Development.with.Rails.5

    该书标题清晰地传达了本书的核心主题——使用 Ruby on Rails 5 进行敏捷 Web 开发。它表明这是一本专注于介绍如何利用 Rails 框架来实现高效、灵活的 Web 应用程序开发的专业书籍。 #### 描述解析 - **描述**: ...

    Agile Web Development With Rails 3rdEdition Beta

    《敏捷Web开发与Rails》第三版Beta:深入解析与核心知识点 标题与描述明确指出了本书的主题——敏捷Web开发与Rails框架的结合。这是一部专为Rails 2版本设计的书籍,作者团队包括了Sam Ruby、Dave Thomas、David ...

    [Web开发敏捷之道--应用rails源代码][5]txt

    【标题】:“Web开发敏捷之道--应用Rails源代码”是一个针对初学者的教程,通过深入理解Rails框架的源代码,帮助开发者提升Ruby编程技能。Rails是Ruby on Rails的简称,是一个开源的Web应用程序框架,遵循MVC(模型-...

    Agile Web Development with Rails, 4th Edition, Rails 3.1

    ### 敏捷Web开发与Rails 4th Edition (Rails 3.1)——全面解析 #### 核心知识点概述 《敏捷Web开发与Rails》第四版涵盖了最新的Rails 3.1版本,是一本旨在帮助开发者快速掌握Ruby on Rails框架的核心书籍。本书...

    influxdb-rails-源码.rar

    《InfluxDB与Rails集成深度解析——以influxdb-rails源码为例》 InfluxDB,作为一款专为时间序列数据设计的高性能数据库,被广泛应用于监控、物联网、大数据分析等领域。Rails,作为Ruby on Rails框架的核心部分,...

    Agile Web Development with Rails for Rails 3.2

    - **Scrum和Kanban**:书中介绍了两种流行的敏捷项目管理框架——Scrum和Kanban的基本概念和实施步骤。 - **持续集成(CI)**:为了保证软件质量,书中讲解了如何设置持续集成环境,自动进行构建和测试。 - **版本控制...

    Pragmatic Bookshelf - Agile Web Development with Rails (Final)

    - **多平台安装指导**:提供了在Windows、Mac OS X和Unix/Linux系统上安装Ruby on Rails的详细步骤,帮助读者跨越平台限制,快速上手开发环境。 - **数据库集成**:讨论了Rails与各种数据库的兼容性,如MySQL、...

    Rails相关电子书汇总二

    标题 "Rails相关电子书汇总二" 提供了我们即将探讨的主题——关于Rails的电子书籍集合。Rails是Ruby on Rails的简称,它是一个基于Ruby语言的开源Web应用框架,遵循MVC(模型-视图-控制器)架构模式,以其DRY(Don't...

    Crafting Rails Applications

    作者José Valim不仅是一位资深的Ruby on Rails开发者,也是Rails核心团队成员之一,因此书中内容不仅覆盖了理论知识,还有大量实践经验分享。 #### 二、书籍内容概览 本书不仅仅局限于介绍如何使用Rails内置功能...

    Agile Web Development with Rails

    - **DRY原则**(Don't Repeat Yourself):这一原则贯穿于整个Rails框架之中,旨在通过自动化工具和模板减少代码冗余。 - **约定优于配置**(Convention Over Configuration):Rails提供了一系列默认配置,开发人员...

    rails框架指南.pdf

    相比之下,Ruby on Rails通过其简约的设计哲学,提供了一种更为直观和高效的开发体验,尤其适合追求快速迭代和原型开发的场景。然而,每种框架都有其适用场景和优劣,选择最适合项目需求的框架才是关键。

    Ruby For Rails(英文版)(清晰文字pdf)

    - **实战应用**:通过一个实际项目——在线音乐商店的开发过程,展示了如何将理论知识应用于实际的Rails开发中。这个例子覆盖了从需求分析到最终部署的整个流程。 - **源码解析**:最后,本书还介绍了一些探索Rails...

    shopping_card_rails-源码.rar

    《购物车实现——深入解析"shopping_card_rails"源码》 在软件开发中,购物车功能是电子商务网站的核心组成部分,它允许用户选择商品并进行结算。本篇文章将深入探讨"shopping_card_rails"源码,揭示其在实现购物车...

    Agile Web Development with Rails (4th edition).pdf

    - **Scrum和Kanban**:本书介绍了两种流行的敏捷管理方法——Scrum和Kanban,并探讨了它们在Rails项目中的具体应用。 - **持续集成**:强调频繁地将代码合并到共享库中,以便快速发现并解决问题。 - **测试驱动开发...

    Agile Web Development

    ### 敏捷Web开发:利用Ruby on Rails进行高效构建 #### 标题解析与扩展 - **Agile Web Development**(敏捷Web开发)这一标题直接指出了本书的主要内容——使用敏捷开发方法进行Web项目的构建。这里提到的“敏捷”...

    skowars:查找工作机会。 Ruby on Rails社交网络项目

    "Skowars" 是一个基于 "Ruby on Rails" 框架开发的社交网络项目,它的核心功能是帮助用户寻找工作或学习机会。标题中的 "查找工作机会" 指出该应用可能包含招聘、求职或者教育资助的匹配功能。 **描述详解:** ...

    毕业设计——多用户博客系统.

    【标题解析】:“毕业设计——多用户博客系统”这一标题表明这是一个针对计算机科学与技术专业学生的毕业设计项目,主要涉及的是构建一个支持多个用户的博客平台。这个系统可能包含用户注册、登录、发布博客、评论、...

Global site tag (gtag.js) - Google Analytics