2016-12-01 13 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列,然后做了第二次部署删除临时类。

不是说我会将此推荐给其他任何人,但它工作。