Можно ли Распределить Приложение Ruby on Rails без Источника?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

24
задан Community 23 May 2017 в 12:09
поделиться

7 ответов

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

25
ответ дан 28 November 2019 в 23:47
поделиться

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

2
ответ дан John Millikin 28 November 2019 в 23:47
поделиться

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

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

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

2
ответ дан Pete 28 November 2019 в 23:47
поделиться

Смотрите на JumpBox.

у меня были переговоры с ними по теме, и у них, кажется, есть решение, которое будет скоро работать на приложения для направляющих.

0
ответ дан Subimage 28 November 2019 в 23:47
поделиться

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

7
ответ дан 28 November 2019 в 23:47
поделиться

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

1
ответ дан 28 November 2019 в 23:47
поделиться

I'm wondering if you could just "compile" the ruby code into an executable using something like RubyScript2Exe ?

To be honest I haven't used it but it seems like it could be what you want, even if it just packages up the scripts with the interpreter into a single executable.

0
ответ дан 28 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: