2008-09-19 24 views
24

Me pregunto si es posible distribuir una aplicación RoR para uso de producción sin el código fuente? He visto this post on SO, pero mi situación es un poco diferente. Esta sería una aplicación administrada por personas con alguna pista, por lo que estoy contento de seguir necesitando una configuración de Apache/Mongrel/MySQL en el lado del cliente. Todo lo que realmente quiero es que la fuente esté protegida. La codificación parece una forma popular de distribuir aplicaciones PHP (por ejemplo: Helpspot).¿Puede distribuir una aplicación Ruby on Rails sin fuente?

que he encontrado estas soluciones posibles:

  • Zenobfuscate - no todos los tipos de código Ruby sin embargo es compatible, por lo que cuenta de eso
  • Ruby Encoder - puede ser la mejor opción, ya que su codificador PHP se ve bien (no lo he intentado sin embargo) pero aún no está disponible. He usado IONcube para PHP antes y funcionó bien, pero it doesn't seem that IONcube is interested yet.
  • Slingshot - se mencionó en la otra publicación SO, pero resuelve un problema diferente al mío y la fuente sigue siendo visible.
  • RubyScript2Exe - del doco, no está listo para producción, por lo que eso cuenta.

He oído que el uso potencial de JRuby y la distribución de bytecode pueden ser una forma de lograr esto, pero nunca he usado JRuby, así que no estoy seguro de lo que implica.

¿Alguien puede ofrecer alguna idea y/o ejemplos conocidos? Idealmente, me encantaría tener algún tipo de escenario de compilación automatizado también.

Respuesta

24

Su mejor opción ahora es utilizar JRuby. Un poco de historia: mi empresa (BitRock) trabaja con muchos proveedores de código abierto de marca registrada y comercial. Los ayudamos a empaquetar su software de servidor, que normalmente se basa en PHP, Java o Ruby junto con un servidor web o servidor de aplicaciones (Apache, Tomcat), el tiempo de ejecución del lenguaje y una base de datos (típicamente Postgres, MySQL) en un servidor autónomo, instalador fácil de usar Tenemos una gran cantidad de clientes basados ​​en PHP (incluido HelpSpot, que mencionas), pero también varios basados ​​en Rails. En el caso de los clientes de RoR, la norma es utilizar JRuby junto con Tomcat o Glassfish, aunque en algunos casos también incluimos un intérprete nativo de Ruby para ejecutar scripts específicos que se basan en bibliotecas que aún no se han transferido a JRuby (generalmente no son parte de la aplicación) . JRuby ha madurado rápidamente y en muchos casos realmente ejecuta su código más rápido que Ruby. También deberá tener en cuenta que aunque trasladar su código a JRuby es bastante sencillo, necesitará invertir algo de tiempo en eso. Es posible que desee comprobar JRuby Stack que es un instalador gratuito de todo lo que necesita para empezar. ¡Buena suerte!

+0

que pila jRuby usas? He intentado compilar para sacudir con Torquebox 4, pero descomprime el código real en un directorio temporal cuando se ejecuta, por lo que se puede tomar con bastante facilidad. – micred

2

Puede, pero no haría nada para evitar que alguien realice una ingeniería inversa o lo modifique. Recuerdo que había un artículo acerca de intentos similares de ofuscar a Perl y cómo podrían ser evitados de manera efectiva por un depurador y 5 minutos de esfuerzo.

+24

No creo que se necesite perl obsesivo por perl se confunde lo suficiente por sí mismo ... – UnkwnTech

+1

Cualquiera que sea la solución, no es tan seguro como no darle a nadie la aplicación. Solo estoy tratando de encontrar la forma de poner un obstáculo lo más grande posible frente a cualquiera que intente llegar a la fuente. Hay un pequeño elemento de confianza allí ya que los clientes han pagado para usar el software. –

2

Si no puede esperar la entrega de RubyEncoder, entonces creo que ZenObfuscate es el más prometedor. Aunque puede requerir algunas modificaciones en su código fuente, lo dicen en su sitio:

ZenObfuscate cuesta $ 2500 para una licencia de sitio o es individualmente negociable para otros esquemas de licencia. Sí, eso es caro Eso fue a propósito. Pero no dejes que eso te frustre demasiado. Si su producto es realmente genial y queremos que tenga éxito, lo haremos funcionar. "Realmente genial" no es freecell.

Por supuesto, por $ 2500 (o más), esperaría obtener algunos ajustes al compilador que harán que su base de código sea totalmente compatible. Puede valer la pena involucrarlos en la conversación.

+0

No me di cuenta, gracias Pete, tal vez valga la pena hablar con ellos al respecto. –

0

Eche un vistazo a JumpBox.

He tenido conversaciones con ellos sobre el tema, y ​​parecen tener una solución que funcionará pronto para las aplicaciones de Rails.

+0

¿Cómo ayuda JumpBox? –

7

Si publica la fuente, ofuscada o no, su aplicación será pirateada. Ver, por ejemplo, Mint. Depende de lo que esté creando, pero puede descubrir que es mejor que lance la aplicación como una especie de híbrido: una aplicación alojada con una API bien definida y un componente que se ejecuta en el servidor del cliente. Mientras el verdadero valor de su producto viva en el lado del servidor, no necesita ofuscar su código y simplemente puede liberar el código fuente sin modificar.Además, esto también puede darle la oportunidad de llegar a clientes que ejecutan, por ejemplo, PHP en lugar de Ruby. Véase, por ejemplo, Google Analytics, HopToad, Scout, etc, etc.

+3

++ Este es el nuevo mundo de fuente abierta/cerrada de la aplicación web. En realidad, representa un gran escenario para los desarrolladores: el valor de su aplicación está en su servicio y ejecución, no necesariamente en el código en sí. Puede disfrutar tanto de la libertad del código abierto como de los beneficios del suministro limitado. – guns

+4

-1 por no responder la pregunta. Esta no es una cuestión de diseño de arquitectura, modelos de negocio o si la aplicación será pirateada o no. –

+2

Creo que dado que no existe una solución real para este problema, y ​​en general es un enfoque inherentemente defectuoso, ofrecer alternativas es bastante razonable. –

1

También puede echar un vistazo a Mingle de ThoughtWorks studios como un ejemplo del uso de este JRuby. Es una aplicación de Ruby on Rails, la ejecutan usando JRuby. Han personalizado jruby para cargar archivos .rb encriptados.

0

Me pregunto si podría simplemente "compilar" el código ruby ​​en un ejecutable usando algo como RubyScript2Exe?

Para ser sincero, no lo he usado, pero parece que podría ser lo que quieres, incluso si solo empaqueta los scripts con el intérprete en un único ejecutable.