2016-12-01 34 views
0

我正在研究一個老的Rails應用程序(4.1),它有一個問題,其中有一組相關的類使用兩個不同的camelizations。例如的緣故:超過這一切的時候球隊的行程Rails,處理替代camelized類名

class LegacyStuff; end 
class Legacystuff; end 

的人,我很想只是核彈是像Legacystuff的那些和camelize他們LegacyStuff被更廣泛地使用在應用程序和更符合駱駝化的話。

的主要問題是,重命名這已經變成了一個巨大的痛苦,因爲所涉及的類之一是多態的,所以就像一個表:gizmos具有與Legacystuff類型了很多紀錄。

如果我們遷移改變這種情況,應用程序將不得不在該部署期間停機,否則工作人員將開始崩潰,因爲數據庫更改與舊代碼不兼容。

有沒有辦法告訴rails多態性使用字符串Legacystuff指向類LegacyStuff

或者是否有乾淨的遷移路徑來避免停機?

其次,更重要的是,所有舊東西都有文件和文件夾名稱,例如legacystuff_controllerviews/legacystuff,而更改駝峯化需要重命名所有這些以使自動加載器正常工作?

我希望只是重新命名這些東西,但出於好奇,有沒有辦法告訴自動加載器有關不規則類的存在,這樣可以避免重命名?

謝謝。

回答

0

好了,嘗試了很多其他的事情後,我發現,只是在做:

# legacy_stuff.rb 
class LegacyStuff 
    # actual class goes here 
end 

# legacystuff.rb 
Legacystuff = LegacyStuff 

足夠一個創可貼的,讓我做遷移,重命名所有的STI列,然後做了第二次部署刪除臨時類。

不是說我會將此推薦給其他任何人,但它工作。