一个 Ruby Rails 程序员在 Linux 下的工作环境
[撰文/地藏]
我是一个程序员,我希望我的 PC 工作环境易用,稳定,简洁,高效,个性化。从 Windows -> Debian -> Ubuntu -> Xubuntu -> Fluxbox -> Awesome 我想我走过了一个漫长的道路。目前我使用 Ubuntu 系统,Awesome 窗口管理器,它们基本满足了我的需求,所以我想现在应该是和大家一起来分享一点经验的时候了。
不用 Windows 的理由很简单,在 Linux 系统上感觉更自由,学习提高自己的编程水平更容易,而且基本不会有重装系统这种烦心的事情。选择 Ubuntu 的理由,它很易用,而且保持稳定,比较其他我用过的发行版本,Debian 易用性和稳定性稍差(stable 老了点,testing 稳定差了点,unstable?那你就等着折腾吧),Arch 易用性更差(当然很多人喜欢它的简洁,快速,方便学习 Linux 系统底层机制和应用包的快速更新。但这些对我来讲不是那么重要,我不是 Linux 玩家,也不是 Linux 系统管理员,而只是一个 Web developer)为什么不用 Xubuntu?恩,Xubuntu 是比 Ubuntu 快,但是用了 Awesome 基本一样快了,而且我很多常用的应用也都基于 Gnome,所以就没那个必要了。
然后,我说的个性化不是界面上弄些漂亮的图片,或者换个很 cool 的主题,它们对泡妞也许很重要,但对工作没有什么帮助的。我所指的是使用方法上的可定制性,每个人都有自己的习惯,思考方式,解决问题的方法。因此适合我的未必适合你,这就需要有足够的灵活。
好了,基本我选择的理由就是上面的了。在发行版本的选择上,我想每个人都有各自的需求和个人特点,从中找到一个平衡点是非常重要的。所以我写这些也就是提供一点借鉴。
Awesome 在 LinuxTOY 上已经有文章介绍过了,我也是看了那篇文章才开始用它的,感谢那篇文章的作者。
其他我日常开发工作使用的软件基本就下面这些:
Vim
Vim 开发 Rails 很方便,不太习惯现在 Eclipse、Netbeans 那些大而全的 IDE,它们有很多的优点值得借鉴,不过基本而言它们的启动速度都比较慢,运行后的反应速度也慢。下面是一些我用的 plugin:
- bufexplorer.vim - buffer 切换,console 下面常用
- lookupfile.vim - 找文件,很不错
- matchit.vim - 匹配成对的语句或符号,很有用
- mru.vim - 最常用文件列表,经常用
- NERD_commenter.vim - 快捷来加删 comment,不错
- project.vim - 基本我没用
- rails.vim - 开发 Rails 需要,但大部分好像我都不怎么用,恩,应该再看看它的帮助
- SimpleFold.vim - 它的折叠方法和 Vim 里面自带的那个语法文件不太一样,我个人觉得不错
- snippetsEmu.vim - 缩写代码自动生成,很不错,好用,但是自带的 Rails,Html 的少了点,需要自己再补充一些
- supertab.vim - 好用,常用
- surround.vim - 好用,常用
- taglist.vim - 不怎么用
- tailminusf.vim - 不怎么用
Xterm 或 Urxvt + Screen
Screen 是个好东西,通常我写一个 config 文件放在正在开发的 Rails 应用的目录下,然后 screen -c xxx.config
chdir some_workspace
defutf8 on
screen -t server 0
select 0
exec ruby script/server -u --debug
screen -t console 1
exec ruby script/console
screen -t log 2
exec tail -f log/development.log
screen -t fastri 3
exec fastri-server fastri-server
screen -t mysql 4
exec mysql mysql -uname -ppassword
screen -t terminal
loop_qri.sh
我自己写的一个简单的 Bash 脚本,基于 fastri,用来查 Ruby Rails 以及其他所有 gem package 里面包的 api 方法帮助的小工具。
#! /bin/bash
function select_method()
{
select method in ${keywords}
do
if [[ "$REPLY" =~ ^[1-9][0-9]* ]]
then
history -s “$method”
history -w ~/.loop_qri_history
echo
“=============================================================================================”
qri ${method}
echo
“=============================================================================================”
have_select=1
break
else
keywords=”$REPLY”
have_select=0
break
fi
done
}
history -r ~/.loop_qri_history
read -e -p “Please input some keywords of method:” keywords
have_select=0
while true
do
case “$keywords” in
-stop)
break
;;
-history)
history
;;
*)
COLUMNS=20
PS3=”Choice a method or input other keywords: ”
if [ $have_select -eq 0 ]
then
match_result=`qri ${keywords}`
fi
if [[ "$match_result" =~ "Multiple choices" ]]
then
keywords=`echo “$match_result” | sed /–/d | sed ‘/,/ s/,/ /g’`
echo
“=============================================================================================”
select_method
else
echo
“=============================================================================================”
qri ${keywords}
history -s “$keywords”
history -w ~/.loop_qri_history
have_select=0
read -e -p “Please input some keywords of method:” keywords
fi
esac
done
Firefox + Firebug
Firefox 是个好东西,就是感觉它没有 Opera 快,尤其是打开很多 tab 以后不但慢而且不稳定,所以就只用它和 Firebug 来调试网页了。
Opera
速度很快,即使打开了很多 tab 也是如此。虽然经常因为 Flash 的插件而失去反应,但还是可以接受。
Pidgin
MSN、QQ 都能用了,文字信息交流基本就够我用了。
Git
很好用的版本控制软件,我推荐到的 LinuxTOY,请参考以前的文章。
Xmodmap
我的用法很简单,只是用来把 capslock 和 ctrl 互换个位置。下面是切换这两个键的 xmodmap 配置文件。
! Switch caps lock and left control
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
Awesome
它的使用方法原来文章已经说的很详细了,不行看它的 Wiki 也行:http://awesome.naquadah.org/wiki/index.php?title=Main_Page
下面介绍一点我自己的小窍门。我每天的日常工作要用的软件无非就那么几个,而且我习惯把这些程序放在固定的 viewtag 上,比如 Gvim 和 xterm 在 tagview 1,而 Firefox 和 Gvim 在 tagview 2。但是每天都要逐个启动这些程序把他们放到那些不同的 view 下面是一件非常无聊的事情。所以我找了一个办法来自动完成这些工作。
下面的程序需要你有 Ruby 解析器,你可以:
sudo apt-get install ruby1.8
sudo apt-get install rubygems
sudo gem install awesomer
然后仿照下面的代码写一个你自己的程序启动器。
require 'rubygems'
require 'awesomer'
`xmodmap ~/.Xmodmap`
#注意这里不是单引号,而是 tab 上面那个键
Awesomer.contact do |a|
a.tag_view 1
a.spawn :xterm
sleep 3
a.client_toggletag 3
a.client_toggletag 4
a.spawn :gvim
sleep 3
a.client_toggletag 2
a.client_toggletag 5
a.tag_view 2
a.spawn :firefox
sleep 16
a.client_toggletag 3
a.client_toggletag 6
a.tag_view 9
a.spawn :opera
sleep 20
a.tag_view 5
end
很好!可惜我不是Ruby程序员……
能不能贴一篇C++的配置?
我的工作环境也和这个差不多
debian etch + ion2 + firefox3 + mutt +rxvt +vim +screen + ssh + dsh
对啊。我们C++程序员都希望有一套好的开发方案
最后是awesome的ruby bind?
一个 Ruby Rails 程序员在 Linux 下的工作环境 — LinuxTOY…
[撰文/地藏]
我是一个程序员,我希望我的 PC 工作环境易用,稳定,简洁,高效,个性化。从 Windows -> Debian ->
Ubuntu -> Xubuntu -> Fluxbox -> Awesome 我想我走过了一个漫长的道路。目前我…
正用ubuntu,玩rails,好文章,受教了
“选择 Ubuntu 的理由,它很易用,而且保持稳定,比较其他我用过的发行版本,Debian 易用性和稳定性稍差(stable 老了点,testing 稳定差了点,unstable?那你就等着折腾吧)”
这个作者怎么说话像个还没入门的新手啊!要真有这么多经验的话,应该没这么多主观上的废话吧?
作者难道不知道Ubuntu是基于Debian sid的?stable比较老,好像是很多年前的传闻了吧!这两年基本上每年都有新版的发布,对于熟悉Debian和Ubuntu应用的人来说,有APT,这和Ubuntu半年一发布没有多少本质性的区别了吧!也许能进入stable的软件是不多,但是这恐怕对于大多数人来说已经够用了吧!Toy每天找出这么多新玩意,但对于一个人来说,经常用到的恐怕只有自己习惯的那几款吧!
作者说“testing 稳定差了点”,拜托,用过Debian和Ubuntu的人都知道,Debian testing比Ubuntu经过了更多的稳定性方面的测试,用过的人都知道,怎么会找出这么一个借口。
综上,这段话根本就是和文章主题无关的废话!
推荐emacs
wmii比较适合ruby/rails开发人员, 比如最后那个把特定程序放在特定view里面的需求,在wmii下是很容易的事情,不需要安装任何ruby bindings
我一年前也从widnows转到linux了,不过是ubuntu用了前半年,arch用了后半年,发现还是arch好用。而且,感觉arch更象原汁原味的linux。而且,更不需要重装,用它个三年五年都无所谓。
Arch易用性差o_O ? LZ用了几天Arch?
[...] 一个 Ruby Rails 程序员在 Linux 下的工作环境 — LinuxTOY [...]
@ tangooricha
同意,不严谨、过于主观的话太多。
另外,很遗憾的看到Toy里面怎么还有这么多乐于争论哪个版本好,哪个不好这类幼稚问题的。。。
其实这文就是一个普通用户在ubuntu下生产环境。掺上太多的主观愿望。
Katze
没错阿,我写的就是就是我主观的判断,你认为arch易用那也可以写阿,我也希望能够学习到更多的东西。
tangooricha
TomCat
我是不是新手不重要,严谨?拜托我不是在linuxtoy写论文好不好,重要的是我在分享我自己的经验,而不是跑出来写一段批评,但是却是一堆泛泛而谈。你们说我主观,那你们可以写客观的阿。
我倒是没有认为发行版本有好坏,我只是认为不同的人,做不同的工作,会有不同的侧重点。我自己的经验,学习的背景让我选择了我写的那种工作环境,这种环境不是大众化的,只是一个借鉴一个参考,而不是教科书。
最后,重要的是与朋友分享知识的快乐,很喜欢linuxtoy不断的提供新的知识,新的观点,新的软件。
Jan
wmii 我曾经考虑过它,看过它的文档,也上了下它的作者的blog,恩,最后的感觉是有点无从上手。如果你有这方面的经验,我很希望你也能分享给我们。
邱焜
最后的是一个ruby的批处理脚本,用来启动一堆我经常用的程序,我通常把它绑到我的一个快键上,这样开机登录以后我就可以一键启动工作环境,这个脚本需要一个gem包,也叫awesomer。不知道这样你是否能明白。
Ruby on Rails,或者简称Rails,或者RoR,但是就是不简称Ruby Rails
支持楼主,支持原创
地藏:
ubuntu应该有wmii的包把,装上以后.xinitrc里面加一句exec wmii然后startx 第一次运行会显示一个帮助窗口 建议仔细读一下
对于rubyist,ruby-wmii是个很好的起点,它只是一个配置文件,你可以在它的基础上做修改,通读一遍代码基本能让你了解wmii的各个方面
http://eigenclass.org/hiki.rb?wmii+ruby
呵呵,netbeans在linux下run的很好,很推荐的说。
同推emacs,可以把文章里大部分开发相关内容一网打尽。建议从vim过来的人使用viper+vimpulse,可以模拟vim的keybinding
某些人是否太敏感了?
我通读了全篇后,只有一个感觉,就是感谢作者的分享。
请问一下,Dmenu如何集成到awesome中,谢谢
多谢楼主分享经验!
不好意思,我没有用dmenu,而是用awesomer自带的
在linux下搞开发确实很不错
在想能不能看一这样的一个系列。
java程序的。
c++的。
。。。。
ps:赞楼主的分享。
Debian 的嚴謹還是有他的好處的
Ubuntu 僅能說是比較 user friendly
要說 User Interface 仍然沒有比 Mac OS X 更 hackable 了
所有應用程式都或多或少具備 emacs 的 key binding
Mac OS X + Linux/BSD server 的組合也是不錯的 coding environment
这篇文章的风格不是toy的….
我也是rails程序员
从楼主恶文章中没有看出什么名堂…楼主有潜力作系统管理员…这是我的结论
用ubuntu2年了了,vim+netbeans
也许是ruby/rails本身并不依赖特别的系统环境吧,只要ruby装了,rubygems装了,rails装了,一个可以用的editor就可以干活了…实在是没有什么其他特别之处
不过我最近换mac了…嘻嘻
To 用Visual Studio之类的吧。
UNIX的特点在于每样工具完成最好的一件工作,从这个角度来说,尽管作者文章里有些废话,但确实是实用的文章。期待C++、Java系列的反其道而行之,偏偏要一个集成好了的工具。很显然,你们不适合用UNIX编程。
netbeans,我也是rails程序员,vim我玩的也还不错,毕竟做过很长时间linux网管,可是现在进了系统就是一个ide开一天,所以netbeans的大而全我反倒开始喜欢了。
netbeans的强大让我完全放弃了vim这些轻量级的编辑器,想想调试的时候,netbeans里点一下设断点就ok了,鼠标放到变量上就出结果,如果用vim,可能还要在代码里加breakpointer,还要在终端里用类似gdb的东西(ruby-debug)调试。
开始还觉得vim的编辑功能比nb强,但是nb经过不断改进后已经超过vim了。
好多linux玩家、vim的粉丝觉得用鼠标就是罪过,但是我觉得太绝对了,快捷键是方便,但有时候用鼠标确实更方便,我们要的是方便,不是盲目崇拜。我想如果有xwindows、有firefox,没人想开个终端用w3m浏览网页吧。
w3m与firefox相比缺点并不在于键盘操作,而在于不能渲染图片和缺乏一系列插件。虽然有firefox,也有很多人在用vimperator,包括我。键盘的效率毋庸质疑比鼠标高,不然netbeans干嘛要定义快捷键?
你觉得vim不如netbeans方便无非是nb为你做好了一切,在vim里你可以做到相同的事情,但是需要自己写脚本。让sun的程序员替你写还是自己写,你选择了前者,这没什么问题,但是不代表选择vim的人就是在搞盲目崇拜。
有时候用鼠标确实方便,但绝对不是在程序员写程序的时候。
其实楼主的配置中,真正和ruby有关的无非几处:
1 vim中有ruby的插件,其它插件都是通用的
2 screen启动时自动启动几个ruby相关的东东
3 loop_qri.sh脚本
4 用ruby脚本自动启动一堆程序。其实这个只是用了ruby,和开发什么也没有关系
其它都不是ruby专用的,如果不是开发ruby而是开发其它东西,无非把这几个地方改一下,vim的插件挑点自己喜欢的,screen启动时不要启动ruby,启动点别的就是了。
另外,楼主用的是awesome2?awesome3改用lua进行配置,可以直接用lua代替4中的ruby脚本,这样就不需要安装awesome的ruby binding了。
我也想说:感谢LZ的分享
恩,NERD_commenter.vim是大牛
一个感觉,就是感谢作者的分享。争吵的人应该想想做些更有意义的事情
都已经装好了awesome,用的也很爽,可是。。。。。。。
打开idea ide 显示不了界面,我想用idea开发groovy on grails,而目前eclipse的插件完全是个玩具,终于还是换回fluxbox了。