[技巧]ERROR NoMethodError 和 Failed to build gem native extension

用Rails遇到的两个错误和解决办法,目前还是不尽其所以然,先记下。

1.用Webrick起Server的时候,刷新页面的时候遇到如下错误
ERROR NoMethodError: private method `gsub!’ called

参考http://www.ruby-forum.com/topic/206225

换mongrel做Web Server
$./scripte/server mongrel 即可
需要安装mongrel
$gem install mongrel

2.安装gem的时候遇到如下错误
ERROR: Failed to build gem native extension.

参考http://stackoverflow.com/questions/43778/sqlite3-ruby-gem-failed-to-build-gem-native-extension

环境是Ubuntu,需要安装ruby对应的dev包
$sudo apt-get install ruby1.8-dev

linux下的VNCServer

Linux下的VNCServer很多,启用也很简单。

$vncserver

之后按照提示一步步执行。

这种方法会新建一个session,从其它机器连的server的时候需要指定display的值。

也可使用这个方法:

$x0vncserver

可以让vncserver不启用新的session,使得server和client共享同一个桌面。

用的时候一般需要指定password文件。如果使用过前面的vncserver,在~/.vnc/下面会有一个password文件。

$x0vncserver PasswordFile=~/.vnc/passwd &

就行了。

不过这种大写参数的用法看起来倒是很奇怪

Vim Encoding

每次新装VIM都得设置编码相关的选项,记在这里备忘吧。

encoding: VIM内部编码,也就是内容在VIM内部的表现形式。

fileencoding: 文件读写编码,在打开文件时VIM认为此文件是采用fileencoding所指的编码,于是会进行编码转换,转换为encoding所指编码。

fileencodings: 一个编码序列,VIM依次尝试其中的编码,看看是否能成功转换为encoding所指编码。
termencoding:terminal采用的编码,vim如果要输出到terminal,会将文件转码为termencoding所指编码。

在Linux下,八子一般采用

let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936

感谢:
http://edyfox.codecarver.org/html/vim_fileencodings_detection.html