Jedną z rzeczy, do których dąży Lua, jest możliwość łatwego przenoszenia danych pomiędzy C++ (lub C) a samym sobą. Zasadniczo po prostu przesuwasz/popping danych na stos, aby komunikować się między nimi. Posiadanie wielu środowisk Lua uruchomionych w tym samym czasie jest również bardzo proste (jeśli potrzebujesz tej funkcji). Chociaż Lua jest językiem gromadzącym śmieci, łatwo jest temu zapobiec, jeśli chodzi o dane, które muszą pozostać w twoim kodzie C++. Stworzenie rozszerzalnego systemu wtyczek powinno być łatwe z Lua po ułożeniu podłoża. Zamiana wtyczek (w tym przypadku skryptów) do i ze środowiska wykonawczego w środowisku wykonawczym jest również dość banalna (chociaż może to być prawdą również dla Ruby, nie jestem dostatecznie zaznajomiony z tą informacją).
Jedną z rzeczy do przemyślenia jest to, jak wiele rzeczy zorientowanych obiektowo chcesz, aby twoje skrypty były w stanie obsłużyć. Lua używa funkcji, tabel, metatabeli i prototypów do implementacji programowania podobnego do OO. Niektórzy ludzie to lubią, inni nie; osobiście uważam, że jest to interesujące w użyciu, jeśli czasami nieco przylegające. Nie używając Ruby, nie mogę za nią mówić, ale możesz chcieć zważyć twoją potrzebę wsparcia obiektu/klasy.
Myślę, że w twojej sytuacji powinieneś również zastanowić się, jak szybko chcesz uruchomić swój projekt. Jak zauważyłeś ty i inni, Ruby trudno osadzić w C++, a Lua nie. Czas jest zawsze cenny i jeśli chcesz, aby coś działało JAK NAJSZYBCIEJ, Lua jest prawdopodobnie twoim najlepszym wyborem.
Jeśli uważasz, że Lua jest zbyt uproszczona, a Ruby zbyt trudna do osadzenia, może powinieneś rozważyć Python? – Macke
Jeśli ujawniasz bazę kodu (szczególnie serwer), czy naprawdę potrzebujesz dużej biblioteki? Możesz poświęcić więcej czasu na usuwanie niebezpiecznych funkcji bibliotecznych, które użytkownicy mogą wykorzystać, jeśli chodzi o piaskownicę. –