Mailinglist Archive: yast-devel (126 mails)
| < Previous | Next > |
Re: [yast-devel] [webYaST] :dasherize => false not enough to stop dasherizing? (bug 551284)
- From: Stefan Schubert <schubi@xxxxxxxxxx>
- Date: Tue, 03 Nov 2009 11:25:29 +0100
- Message-id: <4AF00519.4070806@xxxxxxxxxx>
Josef Reidinger schrieb:
Sometimes solutions are quite simple :-) :
class HashWithoutConversationKey < Hash; end
HashWithoutConversationKey.class_eval do
def self.unrename_keys(params)
.....
end
end
...
@arguments = HashWithoutConversationKey.from_xml()
BTW: There is an nice article concerning
_Ruby: instance_eval and class_eval method definitions <http://blog.jayfields.com/2007/03/ruby-instanceeval-and-classeval-method.html>
_http://blog.jayfields.com/2007/03/ruby-instanceeval-and-classeval-method.html
Greetings
Stefan
--
To unsubscribe, e-mail: yast-devel+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-devel+help@xxxxxxxxxxxx
Stefan Schubert write:
Josef Reidinger schrieb:
Jiří Suchomel write:The problem is that I am using the public Instance method "Hash.from_xml".
On Monday 02 of November 2009 13:23:26 Stefan Schubert wrote:I think you find root of problems. Because correct way is not to
Klaus Kaempf schrieb:What does this function actually do?
* Jiří Suchomel <jsuchome@xxxxxxx> [Nov 02. 2009 09:17]:I am also interested in "Hash.dasherize_xml" If it does work I would be
Hi!Hmm,
Bug 551284 describes a problem of mail_settings plugin when it is
called for a second time (while first time it was during basesystem
sequence). The problem itself is that underscores are changed to
dashes in the POST call. And indeed, mail_settings_controller of the
webservice lacks the option to set dasherize to false in respond_to
function, so the solution looked easy.
http://www.bluequartz.us/phpBB2/viewtopic.php?p=318726&sid=ef2add12b91
4 37 160380ae3a8f078521 points to Hash.dasherize_xml which is set to
'true' by default.
Try setting it to 'false'.
Klaus
---
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
able to drop this work around from the registration model:
# Hash.from_xml converts dashes in keys to underscores
# by this we can not find out the correct key name (whether it was a
dash or an underscore)
# unfortunately the regcode keys in registration make excessive use of
dashes AND underscores
# that way the information gets lost what key to assign the correct
value. # So the function "unrename_keys" will be overwritten
module RailsHashFromWithoutConversationKey
Hash.class_eval do
def self.unrename_keys(params)
case params.class.to_s
when "Hash"
params.inject({}) do |h,(k,v)|
h[k.to_s] = unrename_keys(v)
h
end
when "Array"
params.map { |v| unrename_keys(v) }
else
params
end
end
end
end
You have the problem because of converting dashesh to underscores, but
my problem is that underscores are changed to dashes.
As I mentioned earlier, the problem in mail_settings does not appear if
I remove registration step. Maybe just because of this code in
registration is the mail_settings broken.
Jiri
overwrite behavior in class, but overwrite it in own instance.
So if registration need this hack, it should do:
xml = Hash.new(...)
def xml.unrename_keys(params)
...#your hack
end
of course you can write it much pretty e.g. pass xml instance and
overwrite method in separate code.
So "xml.from_xml" does not work.
Additional: "unrename_keys" is a private class.
I must admit, that I am currently have no idea how to solve this.
But I am searching.... :-)
Oh, OK, then solution is more tricky. Use alias to store old behavior and after you load xml restore old behavior.
http://whynotwiki.com/Ruby_/_Method_aliasing_and_chaining#Can_you_alias_class_methods.3F
Sometimes solutions are quite simple :-) :
class HashWithoutConversationKey < Hash; end
HashWithoutConversationKey.class_eval do
def self.unrename_keys(params)
.....
end
end
...
@arguments = HashWithoutConversationKey.from_xml()
BTW: There is an nice article concerning
_Ruby: instance_eval and class_eval method definitions <http://blog.jayfields.com/2007/03/ruby-instanceeval-and-classeval-method.html>
_http://blog.jayfields.com/2007/03/ruby-instanceeval-and-classeval-method.html
Greetings
Stefan
--
To unsubscribe, e-mail: yast-devel+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-devel+help@xxxxxxxxxxxx
| < Previous | Next > |