2008-09-19 3 views
24

소스 코드없이 프로덕션 용 RoR 앱을 배포 할 수 있는지 궁금합니다. 나는 this post on SO을 보았다. 그러나 나의 상황은 조금 다르다. 이것은 약간의 단서를 가진 사람들에 의해 관리되는 응용 프로그램이 될 것이므로 나는 고객 끝에서 여전히 Apache/Mongrel/MySQL 설정을 요구하면서 멋지다. 내가 정말로 원했던 것은 소스를 보호해야한다는 것입니다. 인코딩은 PHP 앱을 배포하는 데 인기있는 방법입니다 (예 : Helpspot).소스없이 Ruby on Rails 애플리케이션을 배포 할 수 있습니까?

내가 찾은 이러한 잠재적 인 솔루션 :

  • Zenobfuscate - 그
  • 을 그을 계산 때문에 루비 코드의 모든 종류의, 그러나 지원
  • Ruby Encoder - 자신의 PHP 인코더로, 최선의 선택이 될 수 있습니다 괜찮아 보이지만 (아직 시도하지는 않았지만) 아직 사용할 수 없습니다. 전에 PHP 용 IONcube를 사용했지만 잘 작동했지만 it doesn't seem that IONcube is interested yet.
  • Slingshot - 다른 SO 게시물에 언급되었지만 다른 문제가 해결되어 소스가 여전히 표시됩니다.
  • RubyScript2Exe - doco에서 제작 준비가되지 않았으므로 그 부분을 계산합니다.

잠재적으로 JRuby를 사용하고 바이트 코드를 배포하는 방법이 이것을 달성하는 방법이라고 들었지만 JRuby를 사용한 적이 한 번도 없습니다. 그래서 무엇이 관련되어 있는지 잘 모르겠습니다.

누구든지 아이디어 및/또는 알려진 예를 제공 할 수 있습니까? 이상적으로 나는 어떤 종류의 자동화 된 빌드 시나리오를 원합니다.

답변

24

지금 가장 좋은 옵션은 JRuby를 사용하는 것입니다. 배경 약간 : 우리 회사 (BitRock)는 많은 독점적 인 상용 오픈 소스 공급 업체와 함께 작동합니다. 우리는 PHP, Java 또는 Ruby를 기반으로하는 서버 소프트웨어를 웹 서버 또는 응용 프로그램 서버 (Apache, Tomcat), 언어 런타임 및 데이터베이스 (일반적으로 Postgres, MySQL)와 함께 자체 포함 된 패키지로 패키지화하는 데 도움을줍니다. 사용하기 쉬운 설치 프로그램. 우리는 당신이 언급 한 HelpSpot을 포함하여 많은 PHP 기반 고객뿐만 아니라 여러 Rails 기반 고객을 보유하고 있습니다. RoR 고객의 경우 JRuby를 Tomcat 또는 Glassfish와 함께 사용하는 것이 일반적이지만 일부 경우 JRuby로 포팅되지 않은 라이브러리에 의존하는 특정 스크립트를 실행하기 위해 원시 Ruby 인터프리터도 번들로 제공합니다 (일반적으로 애플리케이션의 핵심은 아닙니다) . JRuby는 성숙 단계에 접어 들었고 실제로 많은 경우 Ruby보다 빠르게 코드를 실행합니다. 코드를 JRuby로 이식하는 것은 매우 간단하지만, 시간을 투자해야 할 필요가 있음을 고려해야합니다. 시작하려면 필요한 모든 항목을 무료로 설치하는 JRuby Stack을 확인하십시오. 행운을 빕니다!

+0

어느 jRuby 스택을 사용합니까? Torquebox 4로 jar 컴파일을 시도했지만, 실행시 temp 디렉토리의 실제 코드를 압축 해제하여 꽤 쉽게 잡을 수 있습니다. – micred

2

누군가를 리버스 엔지니어링하거나 수정하지 못하도록 할 수는 있습니다. Perl을 모호하게하려는 유사한 시도에 대한 기사와 디버거에서 5 분의 노력을 통해 효과적으로 우회 할 수있는 방법에 대한 기사가있었습니다.

+24

나는 obfusticating perl이 필요하다고 생각하지 않는다 perl은 그 자체로 충분하게 obfusticated이다 ... – UnkwnTech

+1

그것은 해결책이 무엇이든 상관없이 누구에게도 응용 프로그램을 제공하지 않는 것처럼 안전하지 않다. 나는 근원지에 가려고하는 사람 앞에서 가능한 한 큰 장애물을 붙이는 방법을 알아 내려고 노력하고 있습니다. 고객이 소프트웨어를 사용하기 위해 돈을 지불하면 작은 신뢰의 요소가 있습니다. –

2

RubyEncoder의 제공을 기다릴 수 없다면 ZenObfuscate가 가장 유망하다고 생각합니다. 소스 코드를 일부 수정해야 할 수도 있지만 사이트에서 다음과 같이 말합니다.

ZenObfuscate는 사이트 라이센스로 $ 2500이나 다른 라이센스 체계와 개별적으로 협상 할 수 있습니다. 네, 그건 비쌉니다. 그게 목적 이었어. 그러나 당신을 너무 많이 방해하게하지 마십시오. 귀하의 제품이 정말 멋지며 성공할 수 있기를 바랍니다. "정말 멋지다"는 프리셀이 아닙니다.

물론 2500 달러 (또는 그 이상)이면 코드베이스를 완벽하게 지원할 수 있도록 컴파일러를 약간 조정할 수 있기를 바랍니다. 대화에 참여할만한 가치가있을 수 있습니다.

+0

나는 그것을 알아 차리지 못했다. Pete에게 감사 할 가치가있다. –

0

JumpBox을 살펴보십시오.

나는 그 주제에 관해 대화를 나누었고, 곧 Rails 응용 프로그램에서 사용할 수있는 솔루션이있는 것 같다.

+0

JumpBox는 어떻게 도움이됩니까? –

7

소스를 공개했거나 난독 화되었거나 그렇지 않은 경우 앱이 불법 복제됩니다. 예를 들어 Mint을 참조하십시오. 그것은 당신이 구축하고있는 것에 달려 있지만 잘 정의 된 API를 가진 호스팅 된 앱과 고객의 서버에서 실행되는 구성 요소를 제공하는 것이 좋습니다. 제품의 진정한 가치가 서버 측에서 살아있는 한, 코드를 난독화할 필요가 없으며 소스 코드를 수정하지 않고 릴리스 할 수 있습니다.또한 Ruby가 아닌 PHP를 실행하는 클라이언트에게 접근 할 수있는 기회를 제공 할 수도 있습니다. 당신은이에 대한 JRuby를 사용 예로 ThoughtWorks studios에서 Mingle에서 좀 걸릴 수 등

+3

++ 이것은 웹 응용 프로그램의 새로운 공개/폐쇄 소스 세계입니다. 실제로 개발자에게는 정말 훌륭한 시나리오입니다. 애플리케이션의 가치는 코드 자체가 아니라 서비스와 실행에 있습니다. 오픈 코드의 자유와 제한된 공급의 이점을 모두 누릴 수 있습니다. – guns

+4

-1 질문에 대답하지 않았습니다. 이것은 아키텍처 디자인, 비즈니스 모델 또는 앱 불법 복제 여부와는 관련이 없습니다. –

+2

나는이 문제에 대한 실제 해결책이 없다는 점을 감안할 때 대체로 본질적으로 결함이있는 접근 방법이라고 생각한다. –

1

, 예를 들어, Google Analytics, HopToad, Scout 등을 참조. Ruby on Rails 앱으로, JRuby를 사용하여 실행합니다. 그들은 암호화 된 .rb 파일을로드하도록 jruby를 사용자 정의했습니다.

0

RubyScript2Exe 같은 것을 사용하여 실행 파일에 루비 코드를 "컴파일"할 수 있는지 궁금합니다.

솔직히 말해서 사용하지는 않았지만, 인터프리터가있는 스크립트를 하나의 실행 파일로 패키지하는 경우에도 원하는대로 사용할 수 있습니다.