2009-10-27 60 views
2

我想要一個插件,我正在開發自動重新加載,每次我改變我的代碼,模擬通常在Rail的開發模式下發生的相同的自動重新加載。我的插件主要是一個ActiveRecord混合模塊。我已嘗試過在相關Google搜索中找到的所有建議。沒有任何工作。Rails自動重新加載插件在開發模式

在我的插件的init.rb:

require 'activesupport' unless defined? ActiveSupport 
require 'activerecord' unless defined? ActiveRecord 

if RAILS_ENV == 'development' 
    ActiveSupport::Dependencies.load_once_paths.delete lib_path 
    ActiveSupport::Dependencies.load_once_paths.delete File.join(lib_path, 'crowd_compass', 'publisher.rb') 

    ActiveSupport::Dependencies.load_paths << lib_path 
    ActiveSupport::Dependencies.load_paths << File.join(lib_path, 'crowd_compass', 'publisher.rb') 
end 

ActiveRecord::Base.send(:include, CrowdCompass::Publisher) 

在軌更新日誌來看,我也注意到了特性,自動重新加載所有插件。

config.reload_plugins = true if RAILS_ENV == 'development' 

這是我預料到,當我把它添加到我的conf/environment.rb中

我的插件的結構使得所有文件自動加載由命名空間=>目錄沒有工作。我這樣做是爲了避免使用「require」,因爲我認爲需要阻止我的插件被自動重載。

我一直在開發模式下通過rails控制檯完成所有工作,我不知道這是否與運行雜種(或類似web服務器)的行爲不同。

插件按預期工作,但每次我對代碼進行任何更改時都必須重新加載。有誰知道一種方式來獲取插件重新加載?

回答

1

控制檯絕對不會像雜種一樣工作。您使用的所有技術都會在每次請求時重新加載,這與您每次啓動控制檯時類似。

沒有調用reload!在控制檯中重新加載代碼的方法。

+0

這就是我所害怕的。我甚至會很高興重新加載!但是這對我來說也不適用。相反,我每次改變插件中的內容時都必須重新啓動控制檯。如果解決了這個問題,插件開發將會更容易。謝謝您的回覆。 – 2009-10-28 01:34:36

+0

你有沒有試過寫測試?如果你測試驅動你的插件,你不必重新加載控制檯這麼多。 – 2009-10-28 05:39:07

+1

@BJ Clark。幾天前,我轉而試用了Rspec的插件。它的速度非常快,並且爲插件設置autospec,每次我在插件目錄中保存任何文件時都會看到我的測試運行非常好。當我試圖手動測試我的插件時,我不知道我在想什麼。 – 2009-10-30 18:02:43

相關問題