Pergunta

Eu estou querendo saber se é possível distribuir um aplicativo de RoR para uso em produção, sem código-fonte? Eu vi este post sobre SO , mas minha situação é um pouco diferente. Este seria um aplicativo administrado por pessoas com alguma pista, então eu estou bem com ainda a necessidade de uma configuração Apache / Mongrel / MySQL na extremidade do cliente. Tudo que eu realmente quero é que a fonte a ser protegido. Encoding parece uma maneira popular para ir para a distribuição de aplicações PHP. (Por exemplo: Helpspot )

Eu encontrei estas soluções possíveis:

  • Zenobfuscate - nem todos os tipos de código Ruby é suportado no entanto, assim que conta que a
  • Rubi Encoder - pode ser a melhor opção, já que seus codificadores olhares PHP tudo bem (eu não tenho tentou fazê-lo no entanto), mas ele não está disponível ainda. Eu usei IonCube para PHP antes e ele funcionou bem, mas não parece que IonCube está interessado ainda .
  • Slingshot - foi mencionado no outro post SO, mas resolve um problema diferente mina e a fonte ainda é visível.
  • RubyScript2Exe - do doco, não é produção pronta, de modo que contagens que fora.

Ouvi dizer que potencialmente usando JRuby e distribuição de bytecode pode ser uma maneira de conseguir isso, mas eu nunca usei JRuby então eu não tenho certeza do que está envolvido.

Alguém pode oferecer todas as idéias e / ou exemplos conhecidos? Idealmente, eu gostaria de ter algum tipo de cenário de compilação automatizada também.

Foi útil?

Solução

Sua melhor opção agora é usar JRuby. Um pouco de fundo: Minha empresa ( BitRock ) trabalha com muitos fornecedores de código aberto proprietárias e comerciais. Nós ajudá-los a empacotar seu software servidor, que normalmente é baseado em PHP, Java ou Ruby juntamente com um servidor Web ou servidor de aplicação (Apache, Tomcat), o tempo de execução linguagem e um banco de dados (tipicamente Postgres, MySQL) em uma auto-contido, instalador fácil de usar. Temos um grande número de clientes baseados em PHP (incluindo HelpSpot, que você menciona), mas também aqueles baseados em Rails vários. No caso dos clientes RoR a norma é usar JRuby juntamente com Tomcat ou GlassFish embora em alguns casos também agregar um interpretador nativo Ruby para executar scripts específicos que dependem de bibliotecas ainda não portados para JRuby (geralmente não núcleo para a aplicação) . JRuby amadureceu rapidamente e em muitos casos ele realmente executa seu código mais rápido do que o Ruby regular. Você precisará também considerar que, apesar de portar seu código para JRuby é bastante simples, você terá que investir algum tempo nisso. Você pode querer verificar JRuby Stack que é um instalador livre de tudo o que você precisa para começar. Boa sorte!

Outras dicas

Se você soltar a fonte, ofuscado ou de outra forma, a sua aplicação será pirateado. Veja, por exemplo, Mint . Depende do que você está construindo, mas você pode achar que você é melhor para liberar o aplicativo como um híbrido de tipos: Um aplicativo hospedado com uma API bem definida, e um componente que é executado no servidor do cliente. Enquanto o verdadeiro valor de suas vidas produtos no lado do servidor, você não precisa para ofuscar seu código, e você pode apenas liberar o código fonte não modificado. Além disso, este também pode dar-lhe a oportunidade de alcançar clientes que executam, digamos, PHP ao invés de Ruby. Veja, por exemplo, Google Analytics , hoptoad , Escoteiro , etc, etc.

Você pode, mas não faria nada para impedir alguém de engenharia reversa ou modificá-lo. Eu lembro que havia um artigo sobre tentativas semelhantes a obfusticate Perl e como eles poderiam ser efetivamente contornado por um depurador e 5 minutos de esforço.

Se você não pode esperar para a entrega de RubyEncoder, então eu acho que ZenObfuscate é o mais promissor. Embora possa exigir algumas modificações no seu código-fonte, eles dizem isso em seu site:

ZenObfuscate custa US $ 2500 para uma licença de instalação ou individualmente é negociável para outros regimes de licenciamento. Sim, isso é caro. Isso foi de propósito. Mas não deixe que frustram muito de você. Se o seu produto é muito legal e nós queremos vê-lo ter sucesso, vamos fazê-lo funcionar. "muito legal" não é freecell.

É claro, por US $ 2500 (ou mais), você esperaria obter alguns ajustes para o compilador que faria sua base de código totalmente suportado. Pode valer a pena envolvê-los na conversa.

Você também pode dar uma olhada em Mingle de ThoughWorks estúdios como um exemplo da utilização JRuby para este. É um aplicativo Ruby on Rails, eles executá-lo usando JRuby. Eles personalizado jruby a arquivos .rb carga criptografada.

Dê uma olhada JumpBox .

Eu tive conversas com eles sobre o tema, e eles parecem ter uma solução que irá funcionar em breve para aplicações Rails.

Eu estou querendo saber se você poderia apenas "compilar" o código ruby ??em um arquivo executável usando algo como RubyScript2Exe ?

Para ser honesto eu não usei, mas parece que ele poderia ser o que quiser, mesmo que seja apenas empacota os scripts com o intérprete em um único executável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top