我已經發布了一個與此相關的問題,但尚不清楚。我已經簡化了代碼,所以我可以在這裏複製它,讓它儘可能簡單。我仍然不知道什麼是最好的方式來調試,這可能是,但這裏有雲:調用RDF :: RDFa :: Reader後路由錯誤
我的「新」的動作(可以是任何真的)的資源(再次,可以是任意):
def new
RDF::RDFa::Reader.open("http://www.tripadvisor.com/Hotel_Review-g186525-d280839-Reviews-Gerald_s_Place-Edinburgh_Scotland.html") do |r|
r.each_statement do |statement|
Rails.logger.debug(statement)
end
end
respond_to do |format|
format.html { }# new.html.haml
format.json { render json: @base_item }
format.js
end
end
頁面呈現正常,並且RDF代碼運行成功,但是,當我刷新頁面或嘗試訪問其他任何內容時,我會得到以下內容(subitude'base_item',其中包含我嘗試訪問的任何資源,它們全部失敗並出現此錯誤):
ActionController::RoutingError (private method `redefine_method' called for #<Class:0x000001058527c0>):
app/models/base_item.rb:3:in `<class:BaseItem>'
app/models/base_item.rb:2:in `<top (required)>'
app/controllers/base_items_controller.rb:3:in `<top (required)>'
我想知道這是否是特定於r df gem(它使用nokogiri)或者它是一個普通路由問題,但還沒有找到一種方法來測試它。
任何幫助表示讚賞。
編輯: 看來它與好像我走了這一點,事情保持工作的r.each_statement線做..
更新: 我一直無法重現這個Rails的外但我已經縮小到與ActiveRecord的問題。我已經在https://github.com/slamorsi/rdfTest
設置了一個示例應用程序有兩種模型,Test和TestChild。如果Test和TestChild相關,錯誤是可重現的 - 現在Test與TestChild有has_many關係。該應用程序的根目錄測試#索引,它具有示例RDF/RDFa代碼。如果你加載頁面然後刷新,你會看到'重新定義的方法被稱爲...'錯誤。如果模型之間沒有關係,或者沒有RDF/RDFa語句,那麼執行每個代碼時,一切正常。我不知道可能會導致這種情況。
app/models/base_item.rb中有什麼? – thomasfedb
它似乎不是特定於任何控制器或模型,我可以將該RDF代碼放在任何位置,並且會爲我嘗試訪問的任何資源拋出錯誤,但我將包含在編輯中。 – imorsi