由于空间只支持rails2.3.11所以现在暂时不学rails3了,相对来说rails2的书籍还是挺多的
目前在看的是:Web开发敏捷之道——应用Ralls进行敏捷Web开发,第3版,需要的可以在这儿下载:
我准备先做个采集性质的网站先玩着,看下前面的基础部分然后自己开始写,遇到了问题再读相关的章节,我觉得这样感受比较深。如果跟着他的例子走,很多东西他都已经帮我们分析好了,看了一遍可能感觉还是不知道怎么写自己的网站
1、新建model:
ruby script/generate model abc title:string auth:string content:text
可以在命令行指定所有的数据类型也可以自己编辑生成的model文件,生成的文件在app/models里面
注意:后面的字段之间要有空格,字段内部不能有空格,比如:title :string title后面与冒号之间多了个空格就错了
2、新建controller:
ruby script/generate controller abc fgh
abc就是controller,fgh就是对应abc里的action了,这个会同时生成相应的view
3、新建脚手架
ruby script/generate scaffold abc title:string auth:string content:text
这个就是帮你同时生成了action、model和view而已,并且生成的文件里有些基础的示例代码,默认的有index、show、edit、create之类的action,并且相应的view会取出对应model的数据放到index、show、edit这些页面上。初学可以用用,以后估计用的少,生成的东西太简单,基本上就是把model的各个成员全部罗列出来而已。
4、新建migrate任务
ruby script/generate migrate abc
这个就是迁移任务了,其实他实现的还是比较简单的,就是把每个迁移任务前面加上日期,然后在数据库里记录哪些任务被执行了。虽然简单但是很有用,版本式的数据库管理在测试的时候还似乎挺顺手的
如果你要修改数据库最好做个迁移任务,这样以后可以回滚而且也能看出你什么时候而且怎么修改了数据库
下面是我实际中遇到的一些问题
1、rails abc -D
如果要以fcgi、cgi等方式部署就要加上-D参数,会在public目录下生成需要的dispatch.fcgi等
注意是大写的D,小写的是选择数据库的
如果是本地生成的程序然后放到虚拟主机上部署,记得修改dispatch.fcgi的第一行,比如windows下可能是:#!D:/Ruby187/bin/ruby,linux下就需要改成:#!/usr/bin/ruby
2、dispatch.fcgi需要改成 755不然不能执行
3、虚拟主机上的配置,我用的是hostmonster,网上的攻略一般是新建一个子域名,然后用ln -s来将你的rails程序的public目录链接到public_html目录下与那个子域名同名
我的rails程序就是我的整个网站,我直接把程序部署在public_html目录了,就是把你的rails程序的根目录下的所有东西全部复制到public_html下了:
注意:记得把public目录下的.htacess和dispatch.fcgi放到public_html目录
.htacess的内容后面给出
4、开启hostmonster上的gzip压缩
hostmonster上提供的是mod_deflate,在.htacess加入下面内容即可:
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/json
Header append Vary Accept-Encoding
.htacess的全部内容如下:
# General Apache options AddHandler fcgid-script .fcgi AddHandler cgi-script .cgi # For security reasons, Option followsymlinks cannot be overridden. #Options +FollowSymLinks +ExecCGI Options +SymLinksIfOwnerMatch +ExecCGI # If you don't want Rails to look in certain directories, # use the following rewrite rules so that Apache won't rewrite certain requests # # Example: # RewriteCond %{REQUEST_URI} ^/notrails.* # RewriteRule .* - [L] # Redirect all requests not available on the filesystem to Rails # By default the cgi dispatcher is used which is very slow # # For better performance replace the dispatcher with the fastcgi one # # Example: # RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] RewriteEngine On # If your Rails application is accessed via an Alias directive, # then you MUST also set the RewriteBase in this htaccess file. # # Example: # Alias /myrailsapp /path/to/myrailsapp/public # RewriteBase /myrailsapp AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/json Header append Vary Accept-Encoding RewriteBase / RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] RewriteCond %{REQUEST_FILENAME} !-d # In case Rails experiences terminal errors # Instead of displaying this message you can supply a file here which will be rendered instead # # Example: # ErrorDocument 500 /500.html ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"