Ruby开发者应该熟悉的10个工具

1. Git

Git 是进入Ruby 这个生态圈首先最应该学会的工具。几乎所有以Ruby 开发出来的套件都放在Github 上。也就是不管你要下载或修改协作都需要透过Git。

2. RVM

Ruby 有很多种 implementation,比较多人在使用的有

◆ 标準的 MRI Ruby 1.8.7

◆ 标準的 MRI Ruby 1.9.2

◆ REE ( Ruby Enterprise Edition)

◆ JRuby 等等

其实你用哪一种版本开发都无所谓,不过目前有一些project 只能在 Ruby 1.9.2 上执行。切换 Ruby 环境跑实验 project 在之前的时代是一件很痛苦的事。

所以有人发明了RVM,让开发者可以无痛的可以切换各种Ruby 环境,甚至透过RVM 制造出独立的 Gemset 环境,无负担的尽情实验新工具。

3. Mac

不可否认的开发Ruby 程式,Mac 是第一首选环境。

最初的原因是撰写Ruby / Rails 的利器: TextMate http://marcomates.com/ ,是 Mac 上的软体。而后来使用 Mac 开发 Ruby 程式的开发者越来越多,更加深这种情况, 造成一些实战 best practices 以及友善的开发工具,几乎都以 Mac 为优先或唯一平台发佈,如:Pow 与 Homebrew。

4. Homebrew

原先在Mac 上,套件管理几乎是 Macports 与 Fink 的天下。但这两者因为 dependency 处理不佳,加上需要 sudo 执行。某些时候会造成套件管理上的灾难。 在 OSX 10.6 之后的时代,就逐渐被后起之秀 Homebrew 取代。

Homebrew 有两大极优秀之点:

by user,不需 sudo 就可以安装套件。不会把档案权限搞得一团脏。

更新迅速以及乾净。Homebrew 是 git-based 的 fomula sets,透过预设的 fomula 安装程式。

安装时如果发现有错误,可以自行修改,并透过 Github 的功能发 pull request 要求管理者 patch。用 Homebrew 建置出来的 Rails 开发环境通常极为乾净且无恼人的套件 bug。

( Rails developer 最常会撞雷的两大套件:MySQL 与 ImageMagick 在 brew 上装,几乎没什么问题…)[註1]

5. Pow

这是由 37signals 所开发出来的网页伺服器,可以跑任何 Rack Based 的网页程式。特点是,你可以把某个开发中的 project,如:wiki,symlink 到自己的家目录底下的 .pow/ 资料夹。

 
 
  1. $ cd ~/.pow  
  2. $ ln -s ~/projects/wiki 

再打开浏览器上的 http://wiki.dev/,就可以把 projects 挂起来了。

(塬理是拦截对 port 80 上的 request 导回 Pow)

在从前,如果你要挂上 projects,通常得自己改 local 的 apache conf 和 /etc/hosts 加上设定。挂起、移除、重开都非常麻烦。

而 Pow 的诞生,让常常追许多新玩意的开发者,实验的成本变得极度低廉。

6. Rack

Rack 是一个 Ruby 套件,也同时是 Ruby 界的网页程式标准interface。背后的想法与塬理可以参考我以前写的一篇旧文 Rack 与 Rack middleware。

现在只要看以 Ruby 开发的网站程式,几乎都支援 Rack。不会再有以前哪一套框架,推荐独家使用哪一套 web server 跑的乱象。

而因为有了 Pow,挂起 Rack-based 的网站实验程式成本也很低廉。

同时因为採用 Rack 架构开发的缘故,开发者可以透过 Rack middleware 外挂实作一些框架或程式没有的功能。

比如说:

◆ rack-now-www 硬是干掉网址的 www

◆ rack-rewrite 在不支援 .htaccess 的环境下,直接使用 rack 硬 rewrite routing

也很自然而然的会知道:

◆ 想恶搞,改 config.ru

◆ 想重开,touch tmp/restart.txt

这些潜规则。

7.Bundler

Bundler 塬先是 Rails3 架构师 Yehuda Katz 开发出来解决 Rails 中 package dependency 的工具( 在开发 Merb 这个 framework 时,Katz 就开始尝试实作了)。

package dependency 一直是相当麻烦的问题。解不开,就无法将程式 boot 起来。

塬先大家也只有拿 Bundler 搭配 Rails 使用。

而后来 Bundler 也逐渐变成一般 Ruby 程式中预设的套件 dependency 管理程式。

Bundler 中的 Gemfile 设计,不只能让开发者能够轻易的解决套件相依问题,并且可以直接引入「开发中」套件,解决 3rd gem 版本更新过慢,卡住自己开发进度的问题。

 
 
  1. gem 'nokogiri':git => 'git://github.com/tenderlove/nokogiri.git' 
  2. gem 'nokogiri':git => 'git://github.com/tenderlove/nokogiri.git',:branch => 'stable-2' 
  3. gem 'nokogiri':git => 'git://github.com/tenderlove/nokogiri.git',:tag => 'tag-2' 
  4. gem 'nokogiri':git => 'git://github.com/tenderlove/nokogiri.git',:ref => '23456' 

8. Guard

在开发网页程式时,开发者很常重复这样的动作:写一写 -> run test -> refresh web browser -> 继续修改 -> run test -> refresh browser

这些都是很机械式的行为,非常烦人。

有没有办法只要「档案变更,就自动作事」呢?

Guard 就是这样的一套工具。

有趣的是,Guard 刚推出时,其实也只单纯是一套监视档案工具变动的工具,你可以透过写 Guardfile,去自由监视需要监视的资料夹,再 do something。而因为 Guard 架构算设计的不错,后来许多开发者更基于 Guard 做出更多其他的 rubygems。

guard-livereload 就是一个例子。

9. LiveReload

修改网页 => refresh browser 是刚刚所提到的烦人事之一。

LiveReload 提供了监视档案变动,并通知 browser reload 的功能。

开发者如果萤幕够大的话,可以同时开着文字编辑器与 browser,修改的任何变动马上即时显示在 browser 上。

值得一提的是,LiveReload 在 10.7 以后是 broken 的。因此后来有人利用 guard 实作出了 guard-livereload 作为替代品。

10. Sass / SCSS / Compass

自从 Rails 3.1 引入 SCSS 作为Asset Pipeline 当中的选项之后,这套本来没多少开发者知道的 CSS framework 就开始疯狂走红。

SCSS 的塬理是透过写编写「巢状」的 style,取代塬本需要写 CSS 时需要一直复製 DOM 结构名称的动作。并且支援变数、数学、继承、mixin 等功能…

如:

SCSS

 
 
  1. $border-color: #3bbfce;  
  2.   $link-color: #3bbfcf;  
  3.   .content  
  4.      { border-color: $border-color;  
  5.        a{color: $link-color}  
  6.   } 

可以生成

CSS

 
 
  1. .content{ border-color#3bbfce; }  
  2. .content a{color#3bbfcf; } 

而 Comass 是基于 SCSS 的 Framework。提供了更进一步的许多暴力 feature。

有些人可能会搞不清楚 SASS / SCSS / Compass 的关係。如果你有兴趣的话,可以参考我在 Upgrade2Rails31 这个 project 中写的两篇文章:Sass/SCSS 以及 Compass。

原文:http://blog.xdite.net/posts/2011/10/09/10-ruby-developer-must-have-tools/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,下面是一个简单的Ruby接口案例: ```ruby require 'sinatra' # GET请求的接口 get '/api/hello' do content_type :json { message: 'Hello, World!' }.to_json end # POST请求的接口 post '/api/greet' do content_type :json name = params[:name] { message: "Hello, #{name}!" }.to_json end # PUT请求的接口 put '/api/update/:id' do content_type :json id = params[:id] # 执行更新操作... { message: "Record with ID #{id} has been updated." }.to_json end # DELETE请求的接口 delete '/api/delete/:id' do content_type :json id = params[:id] # 执行删除操作... { message: "Record with ID #{id} has been deleted." }.to_json end ``` 上述例子使用了Sinatra框架,它是一个轻量级的Ruby Web框架,适合快速搭建简单的接口。在上面的代码中,我们定义了四个不同的路由,分别对应不同的HTTP请求方法(GET、POST、PUT、DELETE)。 对于GET请求的`/api/hello`接口,它返回一个JSON格式的响应,包含一条简单的问候消息。 对于POST请求的`/api/greet`接口,它从请求参数中获取名字,并返回一个包含问候消息的JSON响应。 对于PUT请求的`/api/update/:id`接口,它从URL参数中获取ID,并执行相应的更新操作,然后返回一个JSON响应。 对于DELETE请求的`/api/delete/:id`接口,它从URL参数中获取ID,并执行相应的删除操作,然后返回一个JSON响应。 以上只是一个简单的示例,实际的接口可能涉及更复杂的逻辑和数据处理。但这个例子可以帮助你了解如何使用Ruby构建一个简单的接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值