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

StackOverflow https://stackoverflow.com/questions/99553

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

Взгляните на Прыгающий ящик.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top