Rails 3:预计2.3初学者的迁移

glm*_*ndr 5 coding-style ruby-on-rails upgrade

我是Rails的初学者.我用2.3.X.

我刚看到Rails 3已预发布[ 编辑:现在发布候选人!].我很可能最终会切换到它.

2.3我不应该采取什么常见的编码习惯,以便切换尽可能顺畅?

编辑:

我已完成作业并阅读发行说明.但对于最关键的问题,他们并不清楚,例如:

1.5新API

路由器和查询接口都发生了重大而重大的变化.有一个向后兼容层,它将在3.1版本发布之前得到支持.

对于像我这样的初学者来说,这还不够全面.会破坏什么?我可以在2.3.X中做些什么来避免以后遇到麻烦?

Sim*_*tti 12

看看我的个人编码习惯(我从1.2.x开始就使用Rails),这里列出了根据Rails 3发行说明可以预见的API更改.

找到所有)

避免使用:

Model.find(:all)
Model.find(:first)
Model.find(:last)
Run Code Online (Sandbox Code Playgroud)

支持:

Model.all
Model.first
Model.last
Run Code Online (Sandbox Code Playgroud)

复杂的查询

避免使用复杂查询的组合来支持命名范围.

期待Arel

Rails 3为处理ActiveRecord条件和选项提供了更清晰的方法.您可以预期它会创建自定义命名范围.

class Model
  named_scope :limit, lambda { |value| { :limit => value }}
end

# old way
records = Model.all(:limit => 3)

# new way
records = Model.limit(3).all

# you can also take advantage of lazy evaluation
records = Model.limit(3)
# then in your view
records.each { ... }
Run Code Online (Sandbox Code Playgroud)

升级到Rails 3时,只需删除命名的范围定义.

常量

避免使用以下常量来支持Rails.xRails 2.x中已有的相应方法.

  • RAILS_ROOT 赞成Rails.root,
  • RAILS_ENV 赞成Rails.env,和
  • RAILS_DEFAULT_LOGGER 支持Rails.logger.

不引人注目的Javascript

避免使用繁琐的JavaScript帮助程序,而不使用不引人注目的JavaScript.

宝石依赖

保持environment.rb尽可能干净,以便更容易迁移到Bundler.您还可以在没有Rails 3的情况下使用Bundler预测迁移.