`
fireflyman
  • 浏览: 118417 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

<轉>進階學習 Ruby on Rails

    博客分类:
  • ROR
阅读更多

上一篇 提及了一些入門必練的基礎。而現在要繼續寫的是進階篇。大致 分為兩個方向:隨心所欲整合 / Scale 與 Deploy

* 隨心所欲的整合

1. 認識更多的 Plugin / Gem,減少重造輪子的機會
Gem / Plugin 的擴充性一向對 Rails 的開發加速作用有大大的加分效果。
- GithubRubyForge
- RailsEnvy 每週介紹 新穎 / 亮眼 / 實用 / whatever 的 gem / plugin 與新知

2. 可以移植到其他專案的好用 code,重寫成 plugin 或者 porting 成 Rails Engine 。撰寫自己的 Template
Plugin Patterns (Peepcode) 想學會寫 Rails plugin 請看這份 PDF 。
Rails Engine # 把以前的 app 當成一個 plugin 使用
Rails Template # 每次開專案都會安裝的套件以及執行的動作寫成 Template

3. 開發自己的 View Helper 以及 Form builder。
Rails 不僅僅提供好用的 helper,甚至你可以利用 Rails 提供的 API 撰寫自己的 Helper 和 Builder。為自己的專案套上 standard layout 以及減少寫噁心 html 的機會。
handicaft_interfaces
handicraft_ujs
handicraft_helper

建議閱讀 ihower 在上次 Ruby Tuesday 釋出的 Building Web Interface on Rails ,以及把玩 ihower 在 github 上提供的 demo application。這次的 demo 含了 Rails3 提供的 Unobtrusive Javascript 的概念實作,使用 jQuery on Rails 作為範例。

4. 對於各項第三方整合方案的熟悉

Rails 只是一套網頁框架,但它並不是阿拉丁神燈。比如說你需要搜尋功能、付款功能、寄送簡訊、與 IM 整合 …。Rails 當然 ….* 不可能* 內建。雖然比較少書籍在介紹這方面的資訊,但是有幾個 Site 出了不錯的 Video Turtorial(付費 / 不付費都有..)。

Peepcode
Railscasts
AsciiCasts # Railscasts 的圖文教學版 …

Railskits # 當然你有能力開發、有能力改,但沒時間從頭開發,也可以從這裡買 Solution 回去改 …

5. Deep in Ruby / Rails
Advanced Rails (O’Reilly) 難得真的有 Advanced 到的書
Writing Efficient Ruby Code (Addison Wesley shortcut PDF)
Code Review (Peepcode)


* Scale 與 Deploy

當站大了(code 變多, query 變多 , 活動變多 ) 以後就會遇到架構複雜 / 速度慢的問題。有幾個方向是可以鑽研的

1. 換掉 Ruby 。
well … Ruby 有很多種版本,也許你可以嘗試換上 Ruby Enterprise 節省記憶體以及改善 GC 。

2. 嘗試不同的 Web Server / Rails Web server,找出最適合的搭配。
Mongrel / Thin / mod_rails / FastCGI + Apache / Nginx / lighthttpd 都是可以嘗試的組合。

3. 使用 Rails Metal 或拆散架構
Rails 不是萬能框架,也沒必要用 Rails 這種肥重框架單做簡單的事(如 API 的提供)。能改用其他語言或其他框架(Sinatra )都是可以嘗試的方法 …。
Sinatra with ActiveRecord 的整合方法,我寫了一份 demo 放在 github 上。

4. 檢視 SQL Query 與 Code 效率。
可以使用 NewRelic RPM ,監視整個網站。找出下的不好的 query,或者是寫的不好的 ORM 語法改善。

關於 ActiveRecord 的基礎與進階可以參考 RailsEnvy 出的 Advanced ActiveRecord 和 Pragprog 出的 Everyday ActiveRecord 。少用 join,多用幾個 select 達到同樣的效果,必要時自己手寫 query…

Code 效率可參考 “Deep in Ruby / Rails” 的書單 …

5. Scaling Rails
看完照著 tune,能 cache 的就 cache ..

6. Monitor
Hoptoad #500 自動寄信 / 整理 log
God # 監視誰死掉了,記憶體吃太多,自動重開 ….

7. Deploy
機器很多架構複雜,update code 重開麻煩。就寫個 Capistrano Recipes 幫你的忙吧 …。也可搭配 Chef

8. EC2onrails
懶人架構,前提是要熟 EC2 與 Capistrano …

9. 雲端:Heroku / GAE
有興趣可以參考上個月我寫的這一篇的 Sinatra on the Cloud

其他 Scale 和架構 design 的東西就都屬於 General Scaling Knowledge,就不在這篇專講 Rails 的文章詳述下去…。

* 總結

練到最後其實就是固定訂一些重要的 feed 來看,有新東西就練和寫心得 …這樣會進步的非常快。只看書當然不可能比直接看 API 和 blog post 學的快…
介紹幾個消息來源是值得訂的:

RailsEnvy
Ruby on Rails Official Blog
RubyInside
Dr. Nic
Yahuda Katz
Rick Olson

每一次當 Rails 界舉辦 Conf ,例如 RailsConf 2009 或者是 Acts as Conference 2009 ,其實也都還蠻多 slides 和 video 可以看,看完以後知識會長不少 ….

railsconf 2009 的 videoslides
act_as_conf 2009 的 video

希望提供這些資訊能讓大家對學習和練習有個方向….

分享到:
评论

相关推荐

    RubyonRails九日学习计划

    &lt;br&gt;第三天 完成《Ruby语言入门教程》,并上机调试 熟悉Ruby语言基本语法和常用函数&lt;br&gt;第四天 完成《Ruby语言进阶教程》,并上机调试 &lt;br&gt;第五天 按照《应用Rails进行敏捷Web开发.pdf》学习第二部分购物车示例。&lt;br...

    ruby on rails 学习资料

    "ruby on rails 学习资料pdf"可能是综合性的学习指南,包含了从初学者到进阶者的各种主题,包括Rails的安装和配置、模型关系、控制器逻辑、视图渲染、部署到生产环境等。 "ruby on rails环境搭建.doc"会详细指导你...

    ruby on rails 书全集(10余本经典著作PDF版)

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,以其“约定优于配置”(Convention over Configuration)的设计哲学和“模型-视图-控制器”(MVC)架构模式,深受开发者喜爱。这套书全集...

    Wrox - Beginning Ruby on Rails

    - **有一定编程基础的学习者**:对于已经有一定编程背景但不熟悉Ruby on Rails的开发者而言,本书可以作为一个快速入门的参考资料。 - **寻求提高的Rails开发者**:对于已经在使用Rails进行开发但希望进一步提升技能...

    Ruby On Rails傻瓜书

    通过这本书的学习,读者可以建立起对Ruby on Rails的整体认识,并掌握开发Web应用的基本技能。随着进一步的实践和探索,读者将会更加熟练地运用这一强大的框架来构建高效、可扩展的Web应用程序。

    Ruby on Rails Bible.pdf

    根据提供的文件信息,“Ruby on ...综上所述,《Ruby on Rails Bible》这本书几乎覆盖了所有与Rails开发相关的知识领域,无论是对于希望快速上手的新手还是想要进阶学习的老手而言,都是一本非常有价值的参考书籍。

    ruby on rails合集

    总的来说,这个"ruby on rails合集"是学习和进阶Ruby on Rails不可或缺的资源,涵盖了从基础到高级的各种主题,无论是英文还是中文资料,都将有助于开发者深入理解RoR,提升开发能力。通过系统地学习和实践,你将...

    Ruby on Rails Tutorial - Learn Web Development with Rails 3rd

    ### Ruby on Rails 教程 —— 使用 Rails 学习 Web 开发(第三版) #### 关于本书 本书《Ruby on Rails 教程 —— 使用 Rails 学习 Web 开发》第三版是由 Michael Hartl 编写的一本全面介绍 Ruby on Rails 的教程...

    ruby on rails 学习资料汇总

    本资料汇集了关于Ruby on Rails的学习资源,尤其是《Rails Recipes》这本书,它包含了丰富的实践案例和解决方案,适合初学者和进阶者参考。 在Rails框架中,"源码"标签意味着我们将深入理解其内部工作机制,包括...

    ruby on rails

    - **Ruby on Rails Tutorial**:一本受欢迎的入门书籍,适合初学者系统学习Rails。 - **Rails in a Nutshell**:快速指南,适用于有一定基础的开发者查阅。 - **Ruby/Rails生态**:庞大的社区资源,包括论坛、博客和...

    Ruby+Rails+社交+进阶教程5

    在本“Ruby+Rails+社交+进阶教程5”中,我们将深入探讨如何利用Ruby on Rails框架构建一个功能丰富的社交网络平台。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制...

    Ruby-premailerrails轻松为邮件添加CSS样式

    在Ruby on Rails开发中,构建美观的邮件模板是提高用户体验的重要环节。`premailer-rails` gem 是一个非常实用的工具,它可以帮助开发者方便地在邮件中应用CSS样式,使得邮件在不同邮件客户端中都能保持良好的显示...

    ruby on rails 实例1

    在你提供的资源"ruby on rails 实例1"中,我们可以推测这可能是你老师的教学材料,可能包含了一些基础到进阶的RoR应用实例,帮助学生理解和实践RoR的开发。由于没有具体的文件内容,我将根据一般RoR学习路径来解释...

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

    - **书籍定位**:《Ruby for Rails》被广泛认为是学习Ruby语言的必读之作,特别是对于那些希望利用Ruby on Rails(RoR)进行高效Web开发的学习者而言。这本书是所谓的“Ruby三神书”之一,其他两部分别是《Agile Web...

    Ruby语言教程.docx

    Ruby on Rails框架,建立在Ruby之上,进一步简化了Web开发过程。 Ruby基础教程 基本概念: 变量和数据类型:了解如何在Ruby中声明变量,以及基本的数据类型(如整数、浮点数、字符串、数组等)。 控制结构:学习if...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...

    基于ruby on rails 实现的在线聊天软件

    一、主要功能 用户功能: 可以通过右上角图标来管理用户的个人信息,同时可以查看、修改自己的用户...适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    Ruby书签:Ruby和Ruby on Rails书签集合

    总之,"Ruby书签"集合是一个宝贵的资源库,涵盖了从基础到进阶的Ruby和Ruby on Rails知识,包括教程、代码示例、工具和社区资源,帮助开发者不断进步,掌握这一强大的开发工具。通过深入研究和实践,你将能够利用...

    转载 - 26本 Ruby/Rails 相关英文图书简评

    Rails,全称为 Ruby on Rails,是基于 Ruby 语言的一个开源 Web 应用框架,它遵循“约定优于配置”(Convention over Configuration)的原则,极大地提高了开发效率。 这篇名为“26本 Ruby/Rails 相关英文图书简评...

Global site tag (gtag.js) - Google Analytics