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>)
這是從色器件上的用戶類中定義的方法,這是正常工作,在開發模式改變的代碼只有當而服務器正在運行,那麼它沒有被定義。所以我需要重新啓動服務器以正確地重新加載代碼。對此有何幫助?我讀了關於軌道自動加載,但無法找到線索。
是否確定自動加載適用於寶石,即使它們是本地的? – Oleander
@Oleander不,我不確定:)但即使代碼沒有重新加載,爲什麼應用程序已損壞,我需要在每次更改後重新啓動服務器,因此更改不僅僅是未加載,還會中斷應用程序! –
@Oleander我檢查了另一個具有本地Gem(引擎)的應用程序,並且在Gem中更改了代碼會自動重新加載,所以我不知道這些特定應用程序出了什麼問題。 –