Можно ли распространять приложение Ruby on Rails без исходного кода?

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

Я нашел эти потенциальные решения:

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

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

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


person Dan Harper    schedule 19.09.2008    source источник


Ответы (7)


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

person Daniel Lopez    schedule 25.04.2009
comment
какой стек jRuby вы используете? Я попытался скомпилировать jar с помощью Torquebox 4, но он распаковывает реальный код во временную директорию при запуске, так что его можно довольно легко получить. - person micred; 21.06.2016

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

person Bob Aman    schedule 24.04.2009
comment
++ Это новый мир веб-приложений с открытым / закрытым исходным кодом. На самом деле это действительно отличный сценарий для разработчиков - ценность вашего приложения заключается в вашем сервисе и исполнении, а не обязательно в самом коде. Вы можете наслаждаться как свободой открытого кода, так и преимуществами ограниченного предложения. - person guns; 25.04.2009
comment
-1 за то, что не ответил на вопрос. Это не вопрос архитектурного дизайна, бизнес-моделей или того, будет ли приложение пиратским или нет. - person Dan Harper; 26.04.2009
comment
Я думаю, что, учитывая, что у этой проблемы нет реального решения и, как правило, это изначально ошибочный подход, предлагать альтернативы вполне разумно. - person Toby Hede; 27.04.2009
comment
Мне нравится, как он проголосовал за меня, но, судя по его профилю, похоже, что в конце концов он выбрал вариант размещения. - person Bob Aman; 09.12.2010
comment
На самом деле, Боб, он у меня уже был размещен, но я подумывал добавить локально устанавливаемую версию в качестве другого канала. - person Dan Harper; 28.11.2011

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

person John Millikin    schedule 19.09.2008
comment
Я не думаю, что обфустикация perl необходима, perl сам по себе достаточно запутан ... - person UnkwnTech; 19.09.2008
comment
Какое бы решение это ни было, это не так безопасно, как не давать никому приложение. Я просто пытаюсь понять, как поставить как можно большее препятствие перед каждым, кто пытается добраться до источника. Здесь есть небольшой элемент доверия, поскольку клиенты заплатили за использование программного обеспечения. - person Dan Harper; 19.09.2008

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

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

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

person Pete    schedule 19.09.2008
comment
Я этого не заметил, спасибо, Пит, может, стоит им об этом поговорить. - person Dan Harper; 19.09.2008

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

person mfazekas    schedule 25.04.2009

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

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

person Subimage    schedule 19.09.2008