使用新的博客:http://magicgod.javaeye.com/
原因是可以格式化代码,不能抵挡的诱惑。
rails 之路
使用新的博客:http://magicgod.javaeye.com/
原因是可以格式化代码,不能抵挡的诱惑。
试了最新的ruby for netbeans,且不管jruby,光是IDE的努力也算是不错了。
有了rename重构,还有不错的代码提示,很有点意思了。
由于dns不能使用,所以无法用gem远程安装,实在不是一般的麻烦。
先下载readline-5.1,因为版本过低是不行的。解压,编译后安装,没什么特别的。
zlib-devel也是要安装的,可以用rpm来安装。
下载ruby源码,编译安装,也没什么特别的,会装在/usr/local下。如果原来有ruby,请先卸载。
安装rubygems,也是编译安装,没什么问题。
下载rails的gem文件,然后安装,会报错,一一下载所需要的gem文件。
这里列一下gem list,一般都是需要的,所以事先下载好。
actionmailer
actionpack
actionwebservice
activerecord
activesupport
cgi_multipart_eof_fix 这个包怪一点,搜索一下就可以找到
daemons 很多后台进程要用到
fastthread
gem_plugin
hpricot 解析xml用,可以下载源码后rake gem生成包再安装,但是需要ragel的支持。
mongrel
rails
rake 一般要先安装
还需要安装slave,可以用源码编译,这是backgroudrb所要求的。
:Rake 这个好记
:Redit 任意文件,相对路径
:Rlog 日志文件
:Rpreview 打开浏览器,http://localhost:3000
:Rtags 生成一个tag,要求ctags
:Rrefresh 刷新
:Rfind 查文件,可以不写.rb后缀
gf 这个命令超强,根据当前光标处内容跳转到文件,以下是详细例子(*代表光标):
Pos*t.find(:first)
=> app/models/post.rb
has_many :c*omments
=> app/models/comment.rb
link_to “Home”, :controller => :bl*og
=> app/controllers/blog_controller.rb ~
<%= render :partial => ’sh*ared/sidebar’ %>
=> app/views/shared/_sidebar.rhtml
<%= stylesheet_link_tag :scaf*fold %>
=> public/stylesheets/scaffold.css
class BlogController < Applica*tionController
=> app/controllers/application.rb
class ApplicationController < ActionCont*roller::Base
=> …/action_controller/base.rb
fixtures :pos*ts
=> test/fixtures/posts.yml
layout :pri*nt
=> app/views/layouts/print.rhtml
(In the Blog controller)
def li*st
=> app/views/blog/list.rhtml
:A :R 也是跳文件的
Current file Alternate file Related file ~
model unit test related migration
controller (in method) functional test template (view)
template (view) helper controller (jump to method)
migration previous migration next migration
config/routes.rb config/database.yml config/environment.rb
直接打开
:Rmodel
:Rmigration
:Robserver
:Rfixtures
:Runittest
:Rcontroller
:Rhelper
:Rview
:Rlayout
:Rapi
:Rfunctionaltest
:Rstylesheet
:Rjavascript
:Rplugin
:Rlib
:Rtask
:Rintegrationtest
一个超强的:Rcommand,不介绍了,看help
:Rscript
:Rconsole
:Rgenerate
:Rserver
:Rserver! 强制运行,杀掉前面那个,相当于重启
重构:
:Rextract 简单说就是把rhtml中的一段提出来,变成子页面
项目结构
:Rproject 看上去有个左边项目结构树
surroud: 这个不是命令,而是一个插件,装好后就可以在rhtml中自动关闭<%%>
taglist: 这个插件相当于outline,但是它可以同时放多个文件
NERD_tree:这个插件就是浏览文件,有点项目的感觉。
在model BookDetail中建了一个常量:CONTENT_TEXT_LINK,在其他地方都可以引用,奇怪的是在rhtml里没办法使用,就说没找到常量。
后来就不使用这个常量,改为一个方法就行了。
mysql实际上可以分级控制编码:
client, server, connection, database, table
在rails里要配置的是:
1.文件格式都是utf-8。
2.连接配置成为utf-8。
编辑database.yml,加入一个配置:
encoding: utf8
如果不加入这个其实也可以正常显示中文,只不过数据库里是错误的内容。
虽然Aptana总是挡在前面,连个下载包也不预装radrails,但是还是觉得radrails比aptana更重要。
新的radrails已经可以重构了,这个是非常好的,不过代码提示还是没有,很难想象一个完整的IDE没有代码提示,幸好开发rails主要靠猜。
eclipse升级使用radrails的地址:http://update.aptana.com/install/rails/3.2/ 。
混合3.2.2和radrails可以算是一个java, ruby双开发的亚重型利器了。
如果要纯用tab,并且设为4格宽度,就要进行以下设置
:set ts=4
:set noet
:set softtabstop=0
这样输入一个tab只占4格宽度,也不会变成空格。
不要使用tab混合空格的模式,这样最容易导致在其他编辑器里混乱的情况。
vim还有一个evim的已配置简易环境,非常好用,类似windows的操作风格。
有一个比较复杂的查询,要连接多个表,再套用已有的模板显示出来。
本来以为比较复杂,象hibernate那样生成对象,没想到根本不需要生成对象,直接将选出的字段名称写好就行了,原来的模板也不用改,只是在使用数据类型的时候要处理一下。
因为mysql选出的日期型会被自动处理成字符型,所以在显示的时候要判断一下类型,或者将原来的model也处理成字符串型。在简洁的语法下,这是很简单的。
奇怪的是在写ruby的时候,不自主地会使用比较简单的处理,看来风格所影响。
写了一段处理cookie中的id list的代码,不到10行,还有点沾沾自喜,感觉比java省了好多。
过了几天回头一看,立即觉得味道太大了,马上改写,减到了三行,其实还可以减少,不过为了形式上的美感还是忍了。
java在处理日常事物时花费太多了,要论精巧确实不如ruby。