创建一个engine:
rails plugin new engine_name --mountable
若不想用rails自带的单元测试(Test::Unit),可以加上参数(-T)过滤掉;
rails plugin new engine_name -T --mountable
--mountable # 生成一个命名空间引擎
接下来更改engine_name下的lib/engine_name/engine.rb ,用于支持rspec;
加入以下代码块:
...
config.generators do |g|
g.test_framework :rspec
end
...
可以看出这段代码块是告诉rails,在生成(generate)动作的时候使用配置的测试框架(rspec or others)。
做好了上述的准备工作后,可以安装rspec到当前engine了:
rails g rspec:install
engine与rspec此时已经结合了,外部app与engine之间的链接还差数据库,也就是migrate。在project目录下通过命令可以把migrate文件移植到db/migrate/下,然后进行migrate生成数据表:
rake engine_name:install:migrations # 移植migrate文件
rake db:migrate #生成数据表
此时项目与engine,engine与rspec都已经结合好了。
问题遗留:路由没有配置好,运行rake routes 查看到的路由形如:engine_name/generate_name(s)#index(other action)