Как мне демонтировать объект ruby в Java?
У меня есть объект, который я хотел бы захватить содержимое в Java. Единственная проблема заключается в том, что в настоящее время в рубине.
irb(main):050:0> blah
=> "BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg%253D%253D-\
-0cdecf4edfaa5cbe4693c9fb83b204c1256a54a6"
irb(main):049:0> Marshal.load(Base64.decode64(blah))
=> {"authentication_strategies"=>nil, "user"=>1}
Я получил часть base64 в порядке - так что теперь все в байтах. Как бы я получить доступ к этой 2-й строке? Я предполагаю, что что-то можно сделать с помощью jruby, но я никогда не использовал это раньше и понятия не имел, с чего начать.
позвольте мне подробно остановиться на моей проблеме здесь.
1) это куки, которые я пытаюсь разделить между сервлетом на tomcat и приложением merb на apache
2) Я не собираюсь хранить их в базе данных. Я думал об их использовании в memcached, но по другим причинам я хотел бы сохранить их в виде файлов cookie (да, я хорошо осведомлен о связанных с безопасностью последствиях)
В настоящее время я смотрю на jruby's Red Bridge / jruby-embed, однако, так как это всего лишь 70 байтов, на которые мне нужно смотреть, я думаю, что нелепо вызывать все эти издержки для чего-то такого простого.
а не начинать новый вопрос .... код у меня сейчас выглядит так:
// using commons
Base64 b64 = new Base64();
byte[] decoded = b64.decode(cookie.getValue().getBytes());
ScriptingContainer container = new ScriptingContainer();
container.runScriptlet("la = Marshal.load(\"" + decoded + "\"); puts la.to_s;");
очевидно, это не сработает, потому что маршал собирается проверить первые 2 байта декодированных и выходить из себя, так как это не соответствует основной / минорной версии jruby .... hrmss ..