Можете ли вы распространять приложение Ruby on Rails без исходного кода? - PullRequest
24 голосов
/ 19 сентября 2008

Мне интересно, можно ли распространять приложение RoR для производственного использования без исходного кода? Я видел этот пост на SO , но моя ситуация немного отличается. Это было бы приложение, управляемое людьми, у которых есть некоторая подсказка, так что я полон решимости требовать установки Apache / Mongrel / MySQL на стороне клиента. Все, что я действительно хочу, это чтобы источник был защищен. Кодирование кажется популярным способом распространения приложений PHP (например: Helpspot ).

Я нашел следующие потенциальные решения:

  • Zenobfuscate - однако поддерживаются не все типы кода Ruby, так что это подсчитывается
  • Ruby Encoder - может быть лучшим вариантом, так как их PHP-кодировщик выглядит хорошо (однако я не пробовал), но он еще не доступен. Я использовал IONcube для PHP раньше, и он работал хорошо, но не похоже, что IONcube еще заинтересован .
  • Slingshot - это было упомянуто в другом сообщении SO, но оно решает другую проблему, отличную от моей, и источник все еще виден.
  • RubyScript2Exe - из документа он не готов к работе, так что это считается.

Я слышал, что потенциальное использование JRuby и распространение байт-кода может быть способом для достижения этой цели, но я никогда не использовал JRuby, поэтому я не уверен, что с этим связано.

Может кто-нибудь предложить какие-либо идеи и / или известные примеры? В идеале мне бы хотелось иметь какой-нибудь сценарий автоматической сборки.

Ответы [ 7 ]

25 голосов
/ 25 апреля 2009

Ваш лучший вариант сейчас - использовать JRuby. Немного предыстории: моя компания ( BitRock ) работает со многими проприетарными и коммерческими поставщиками ПО с открытым исходным кодом. Мы помогаем им упаковать свое серверное программное обеспечение, которое обычно основано на PHP, Java или Ruby, вместе с веб-сервером или сервером приложений (Apache, Tomcat), языковой средой выполнения и базой данных (обычно Postgres, MySQL) в автономные, простой в использовании установщик. У нас есть большое количество клиентов на основе PHP (включая HelpSpot, о котором вы упомянули), но также есть несколько клиентов на основе Rails. В случае клиентов RoR нормой является использование JRuby вместе с Tomcat или Glassfish, хотя в некоторых случаях мы также связываем собственный интерпретатор Ruby для запуска определенных сценариев, которые полагаются на библиотеки, еще не перенесенные в JRuby (обычно это не ядро ​​приложения). , JRuby быстро повзрослел и во многих случаях выполняет код быстрее, чем обычный Ruby. Вам также нужно будет учесть, что хотя перенос вашего кода на JRuby довольно прост, вам придется потратить некоторое время на это. Вы можете проверить JRuby Stack , который является бесплатным установщиком всего, что вам нужно для начала работы. Удачи!

7 голосов
/ 24 апреля 2009

Если вы выпустите исходный код, запутанный или иным образом, ваше приложение будет пиратским. См. Например, Mint . Это зависит от того, что вы создаете, но вы можете обнаружить, что лучше выпустить приложение как своего рода гибрид: размещенное приложение с четко определенным API и компонент, который работает на сервере клиента. Пока истинная ценность вашего продукта находится на стороне сервера, вам не нужно запутывать свой код, и вы можете просто выпустить исходный код без изменений. Кроме того, это также может дать вам возможность обращаться к клиентам, работающим, скажем, с PHP, а не с Ruby. См., Например, Google Analytics , HopToad , Scout и т. Д. И т. Д.

2 голосов
/ 19 сентября 2008

Если вы не можете дождаться доставки RubyEncoder, то я думаю, что ZenObfuscate является наиболее перспективным. Хотя это может потребовать некоторых модификаций вашего исходного кода, они говорят об этом на своем сайте:

ZenObfuscate стоит 2500 долларов за лицензию на сайт или является предметом переговоров для других схем лицензирования. Да, это дорого. Это было специально. Но не позволяйте этому слишком мешать вам. Если ваш продукт действительно классный и мы хотим, чтобы он был успешным, мы заставим его работать. «Действительно круто» - это не freecell.

Конечно, за $ 2500 (или больше) вы надеетесь получить несколько настроек компилятора, которые обеспечат полную поддержку вашей кодовой базы. Возможно, стоит привлечь их к разговору.

2 голосов
/ 19 сентября 2008

Вы можете, но это не сделало бы ничего, чтобы помешать кому-либо реверс-инжинирингу или его модификации. Я помню, что была статья о подобных попытках запутать Perl и о том, как их можно эффективно обойти отладчиком и 5 минут усилий.

1 голос
/ 25 апреля 2009

Вы также можете взглянуть на Mingle из ThoughtWorks studios в качестве примера использования JRuby для этого. Это приложение Ruby on Rails, они запускают его с помощью JRuby. Они настроили jruby для загрузки зашифрованных файлов .rb.

0 голосов
/ 28 апреля 2009

Интересно, не могли бы вы просто скомпилировать код ruby ​​в исполняемый файл, используя что-то вроде RubyScript2Exe ?

Если честно, я не использовал его, но, похоже, он может быть тем, что вам нужно, даже если он просто упаковывает сценарии с интерпретатором в один исполняемый файл.

0 голосов
/ 19 сентября 2008

Взгляните на JumpBox .

Я разговаривал с ними на эту тему, и у них, похоже, есть решение, которое скоро подойдет для приложений Rails.

...