2011-11-13 30 views
0

我有一個場景,我需要修改我的插件中的某些功能。所以我想我可以更改vendor/plugins/文件夾中的文件。但後來我意識到我的已安裝的寶石代碼已被軌道使用,而不是vendor/plugins/。我想從我的gemlist中刪除寶石,但會引發錯誤。那麼,我該如何重定向我的rails以使用vendor/plugins/文件夾中的插件而不是我的寶石?如何使用供應商文件夾內的插件而不是rails中的gems?

回答

3

嘗試,每bundler doc

gem [gem name], :path => [path] 

例:

gem "rails", :path => "vendor/rails" 
0

嘗試猴修補,而不是直接修改插件/寶石。我把猴子補丁放在lib /文件夾中,並在我的環境中config.auto_load。這不是太糟糕,只要確保它在相同的模塊中,並且具有相同的方法名稱即可。例如,要覆蓋字符串方法,您可以執行下列操作:

class String 
    def method_to_override 
    do_something 
    super # if you want to still use the original method 
    end 
end 

我建議儘量避免直接修改任何內容。另外,如果我使用捆綁的寶石,我通常會捆綁exec命令,但我認爲仍然會將寶石從我選擇的路徑中加載。我最近很少使用插件。

相關問題