2011-01-13 18 views
6

Düzenli olarak şu istisnayı alırım:"Sonlandırılmış bir nesne" nedir ve neden üzerine yöntemleri çağırmıyorum?

NotImplementedError: method `at' called on terminated object 

bu kod satırında:

next if Hpricot(html).at('a') 

Bu hata ne anlama geliyor? Bunu nasıl önleyebilirim?

+0

o da olur mu? –

+0

'html' döngü parametresi, bu yüzden yapamaz o * önce * döngü, ben doc' gibi bir şey yapabileceğini olsa = hpricot (html) 'döngü üstünde ve (' doc.at yapmak' a ')'. Bunu bir –

cevap

0

bir bağlantı sorun olabilir. Uzantıyı iki kez bağlamadığınızı kontrol edin.

+0

denemeliyim "Uzantıyı iki kez bağla" ile, "iki kez uzatmayı" mı kastediyorsunuz? (Bu, sorunların neden kaynaklanmadığından emin olmak için tasarlanmamış mı?) –

1

kütüphane özel bir C uzatma markaları kullanımını kullanıyor. C uzantısında, daha önce çöp toplanan bir Ruby nesnesinde bir yöntemi çağırmaya çalışıyor.

Bu saf Ruby şey olamaz, çünkü çöp toplayıcısı artık herhangi referans erişilebilir tek serbest nesneler. Fakat C'de, çöp toplayıcısının kontrol etmediği bir yerde bir Ruby nesnesine kalan bir referansın olması mümkündür (örneğin, derleyici bir CPU kaydına bir değişken koymuş olabilir). Eğer bütün döngü önce bir değişkene `hpricot (html)` sonucunu atamak yerine bunu her zaman gerçekleştirmek eğer

İlgili konular