創(chuàng)建一個(gè)engine:
rails plugin new engine_name --mountable
若不想用rails自帶的單元測(cè)試(Test::Unit),可以加上參數(shù)(-T)過濾掉冷蚂;
rails plugin new engine_name -T --mountable
--mountable ?# 生成一個(gè)命名空間引擎
接下來更改engine_name下的lib/engine_name/engine.rb 缭保,用于支持rspec;
加入以下代碼塊:
...
config.generators do |g|
? ?g.test_framework :rspec
end
...
可以看出這段代碼塊是告訴rails蝙茶,在生成(generate)動(dòng)作的時(shí)候使用配置的測(cè)試框架(rspec or others)艺骂。
做好了上述的準(zhǔn)備工作后,可以安裝rspec到當(dāng)前engine了:
rails g rspec:install
engine與rspec此時(shí)已經(jīng)結(jié)合了隆夯,外部app與engine之間的鏈接還差數(shù)據(jù)庫钳恕,也就是migrate别伏。在project目錄下通過命令可以把migrate文件移植到db/migrate/下,然后進(jìn)行migrate生成數(shù)據(jù)表:
rake engine_name:install:migrations ?# 移植migrate文件
rake db:migrate ?#生成數(shù)據(jù)表
此時(shí)項(xiàng)目與engine忧额,engine與rspec都已經(jīng)結(jié)合好了厘肮。
問題遺留:路由沒有配置好,運(yùn)行rake routes 查看到的路由形如:engine_name/generate_name(s)#index(other action)