About ROR

ROR 吸引我的重要一点是:约定优于配置!
以及ROR的一个原则:Don't Repeat Yourself(DRY)
这个原则保证了将来我们修改代码的时候只改一处就行了,绝对不要重复自己。
 
Agile Web Development with Rails 2Ed 中,关于 session 的处理方式,选用了 database 方式。
我们用 rake 命令来创建一个 sessions 的数据库。
depot> rake db:sessions:create
exists db/migrate
create db/migrate/004_add_sessions.rb
 
Then, we’ll apply the migration to add the table to our schema.
 
depot> rake db:migrate
 
下一步必须告诉 Rails database 的方式来处理 session 。因为 the default is to use the filesystem
config 目录下找到 environment.rb ,打开以后找到下面这三行。
# Use the database for sessions instead of the file system
# (create the session table with 'rake db:sessions:create')
# config.action_controller.session_store = :active_record_store
把第三行的 # 号去了就可以了。
在重启服务器之后,刷新一下浏览器就可以看到 sessions 表中存储的数据了。
 
store 控制器中加入了如下方法:
private
def find_cart
session[:cart] ||= Cart.new
end
用了 ruby 的条件赋值。简化了代码。
前面加 private 是为了防止 Rails 把这个方法当作一个可用的 action 方法。如果加入其他的 action 方法必须放到 private 这个声明之前。
 
在没有数据库实体映射的模型中,我们不得不用 include Reloadable 来在每个请求前加载这些 class 。我们做到在第一次启动服务器之前就添加这条命令就不用再重启服务器了。
 
Agile Web Development with Rails 第二版的内容中加了不少更新。在 Rails Framework 部分增加了 Active Support Active Support is a set of libraries that are shared by all Rails components. )和 Migrations 创建数据表的 migration ,你可以认为它是 ruby 语法写的 CREATE TABLE ,而且它做的也就是 CREATE TABLE ,但实际上它是 schema !它已经描述了数据表是怎样的了,而不仅仅是生成数据表,生成数据表仅仅是 migration 执行时瞬时的行为,生成数据表之后 Rails 自动提供 ORM 功能,不再需要另外的 schema 或者自动生成的 code 来重复描述 schema 。这正是其符合 DRY 原则的地方,在整个 RoR 应用当中,只有 migration 这一处描述了 schema ,其它地方均无再次描述 schema 的地方。
depot 的应用中加了 ajax 的应用,等有空的时候把那章翻译出来。。。
 
总的来说 Agile Web Development with Rails 是本真正的 ROR 入门书籍,建议看英文版的,中文版的有第一版,买了书的可以先看中文版第一版,然后再下载英文版第二版的看,比较有长进啊。

你可能感兴趣的:(敏捷开发,Ruby,Rails,DSL,ror)