2016-02-29 24 views
0

我有一些Rails應用和軌道的發動機,它們的結構是這樣的:Rails的不是汽車加載引擎代碼

rails_app_1/ 
rails_app_2/ 
etc...... 
rails_engine_x/ 
rails_engine_y/ 
rails_engine_z/ 
rails_engine_w/ 

每個rails_app加載這些引擎的一個子集,因此,例如rails_app1_1 Gemfile中可能有這樣的代碼

gem 'rails_engine_x','0.0.1', path: '../rails_engine_x' 
gem 'rails_engine_y','0.0.1', path: '../rails_engine_y' 

現在的問題是,在發展模式,改變一些代碼的時候,似乎代碼自動加載被打破,我也得到了修復奇怪的錯誤,當我關閉該服務器,然後再次打開它。比如我可能會像一些錯誤(Constant Foo is not defined -where它實際上是defined-),其他時候我得到了一些錯誤(undefined method serialize_from_session for #<Class:0x00000009762628>)這是從色器件上的用戶類中定義的方法,這是正常工作,在開發模式改變的代碼只有當而服務器正在運行,那麼它沒有被定義。所以我需要重新啓動服務器以正確地重新加載代碼。對此有何幫助?我讀了關於軌道自動加載,但無法找到線索。

+0

是否確定自動加載適用於寶石,即使它們是本地的? – Oleander

+0

@Oleander不,我不確定:)但即使代碼沒有重新加載,爲什麼應用程序已損壞,我需要在每次更改後重新啓動服務器,因此更改不僅僅是未加載,還會中斷應用程序! –

+0

@Oleander我檢查了另一個具有本地Gem(引擎)的應用程序,並且在Gem中更改了代碼會自動重新加載,所以我不知道這些特定應用程序出了什麼問題。 –

回答

0

好的問題就解決了,這是因爲這是試圖手動包括一些模塊一個奇怪的初始化代碼,當我改變了它,每一件事情的工作。