J'ai ce code dans mon contrôleur pour une application Rails:Quand une classe Ruby n'est-elle pas une classe Ruby?
def delete
object = model.datamapper_class.first(:sourced_id => params[:sourced_id])
if object.blank?
render :xml => "No #{resource} with sourced_id #{params[:sourced_id]}", :status => :not_found and return
end
object.destroy
render :xml => "", :status => :no_content
rescue MysqlError => e
puts "raised MysqlError #{e.message}"
render :xml => e.message, :status => :unprocessable_entity and return
rescue Mysql::Error => e
puts "raised Mysql::Error #{e.message}"
render :xml => e.message, :status => :unprocessable_entity and return
rescue Exception => e
puts "not a MysqlError, instead it was a #{e.class.name}"
render :xml => e.message, :status => :unprocessable_entity and return
end
Quand je lance mon spec pour vous assurer que mes clés étrangères fonctionnent, je reçois ceci:
not a MysqlError, instead it was a MysqlError
Comment pourrait-on va ici?
Quelques informations ancêtre: Quand je change la rescousse pour me donner ceci:
puts MysqlError.ancestors
puts "****"
puts Mysql::Error.ancestors
puts "****"
puts e.class.ancestors
Voici ce que je reçois:
Mysql::Error
StandardError
Exception
ActiveSupport::Dependencies::Blamable ...
****
Mysql::Error
StandardError
Exception
ActiveSupport::Dependencies::Blamable ...
****
MysqlError
StandardError
Exception
ActiveSupport::Dependencies::Blamable ...
Y aurait-il un alias dans l'espace de noms global cela rend la classe MysqlError inaccessible?
Wow, c'est méchant. Super endroit. – tomafro
+1 Des trucs fascinants. Je ne pense pas que vous pouvez reproduire cela dans Ruby. J'essayais juste de définir la classe Blah dans irb, et, étrangement, même si vous EXIT AND ENTER irb l'object_id pour une classe Blah nouvellement définie reste le même ... Cependant, si vous définissez Blah différemment au démarrage (par ex. , vous ajoutez une méthode, mais sur la première définition) alors l'object_id change. Je n'ai aucune idée de ce que cela signifie, mais je pense que cela pourrait aider ...? –
Est-ce que MysqlError est modifié par singe avant le chargement de la gemme? – Scott