Rails 除了生成空项目什么都没做,但是可以看到它正在为您工作。清单 2 创建的目录中包含:
应用程序目录,包括模型、视图和控制器的子目录
单元测试、功能测试和集成测试的测试目录
为测试而明确创建的环境
测试用例结果的日志
因为 Rails 是一个集成环境,所以它可以假设组织测试框架的佳方式。Rails 也能生成默认测试用例,后面将会看到。
现在要通过迁移创建数据库表,然后用数据库表创建新数据库。请键入 cd trails 进入 trails 目录。然后生成一个模型和迁移(migration),如清单 3 所示:
清单 3. 生成一个模型和迁移
> script/generate model Trail
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/trail.rb
create test/unit/trail_test.rb
create test/fixtures/trails.yml
create db/migrate
create db/migrate/001_create_trails.rb
注意,如果使用 Windows,必须在命令前加上 Ruby,这样命令变成了 ruby script/generate model Trail。
如清单 3 所示,Rails 环境不仅创建了模型,还创建了迁移、测试用例和测试 fixture。稍后将看到 fixture 和测试的更多内容。迁移让 Rails 开发人员可以在整个开发过程中处理数据库表中不可避免的更改(请参阅 跨越边界:研究活动记录)。请编辑您的迁移(在 001_create_trails.rb 中),以添加需要的列,如清单 4 所示:
清单 4. 添加列
class CreateTrails < ActiveRecord::Migration
def self.up
create_table :trails do |t|
t.column :name, :string
t.column :description, :text
t.column :difficulty, :string
end
end
def self.down
drop_table :trails
end
end
您需要创建和配置两个数据库:trails_test 和 trails_development。如果想把这个代码投入生产,那么还需要创建第三个数据库 trails_production,但是现在可以跳过这一步。请用数据库管理器创建数据库。我使用的是 MySQL:
清单 5. 创建开发和测试数据库
mysql> create database trails_development;
Query OK, 1 row affected (0.00 sec)
mysql> create database trails_test;
Query OK, 1 row affected (0.00 sec)
然后编辑 config/database.yml 中的配置,以反映数据库的优先选择。我的配置看起来像这样:
清单 6. 将数据库适配器添加到配置中
development:
adapter: mysql
database: trails_development
username: root
password:
host: localhost
test:
adapter: mysql
database: trails_test
username: root
password:
host: localhost
现在可以运行迁移,然后把应用程序剩下的部分搭建(scaffold)在一起:
清单 7. 迁移和搭建
> rake migrate
...results deleted...
> script/generate scaffold Trail Trails
...results deleted...
create app/views/trails
...results deleted...
create app/views/trails/_form.rhtml
create app/views/trails/list.rhtml
create app/views/trails/show.rhtml
create app/views/trails/new.rhtml
create app/views/trails/edit.rhtml
create app/controllers/trails_controller.rb
create test/functional/trails_controller_test.rb
...results deleted...