2015-11-03 115 views
3

codewars(以及其他類似網站)如何在瀏覽器中運行代碼?我確定他們只是在自己的服務器上運行它並返回值。但它是如何工作的?就像他們將代碼寫入臨時文件或其他東西一樣,在服務器上運行它...然後返回值?如何?比我做得更簡單嗎?在瀏覽器中運行代碼

我這樣說的:https://www.quora.com/How-do-sites-like-CodeCombat-CodeCademy-and-CodeWars-safely-execute-and-test-code-entered-by-the-users-What-would-their-architecture-look-like

,解決安全件,但我還是覺得不過癮。我希望有人可以有更好的東西來補充它的實際工作方式。

回答

2

這是總推測,我真的不知道他們做了什麼,但你可以使用Kernel#eval以紅寶石[以不是很安全的方式]執行字符串。以此爲例子:

eval "class MyClass; def run; puts 'I ran it!'; end; end; MyClass.new.run;" 
=> I ran it! 

所以在理論上,你可以對字符串進行置換(即\n變得;),並通過eval運行它。