В Ruby, что эквивалентно технике Java ограничения доступа к источнику в ситуации коллег? - PullRequest
0 голосов
/ 16 мая 2009

В Java, когда вы компилируете файл .java, который определяет класс, он создает файл .class. Если вы предоставите эти файлы классов своим коллегам, они не смогут изменить ваш источник. Вы также можете объединить все эти файлы классов в jar-файл, чтобы упаковать его более аккуратно и распространять как одну библиотеку.

Имеет ли Ruby какие-либо функции, подобные этим, когда вы хотите поделиться своими функциями с коллегами, но вы не хотите, чтобы они могли изменять исходный код (если только они не спросят вас о реальном исходном файле .rb и не сообщат они хотят это изменить)?

Ответы [ 6 ]

6 голосов
/ 16 мая 2009

Я полагаю, что функция, которую вы ищете, называется "доверие" (и хранилище контроля исходного кода). Ruby не компилируется так же, как Java, так что нет, вы не можете это сделать.

4 голосов
/ 16 мая 2009

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

Если у вас есть коллега, которому нужен доступ к какому-либо сервису, предоставляемому вашей библиотекой, возможно, вы могли бы открыть его, предоставив сервис web / rest вместо файла .rb.

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

Хотя доверие намного проще.

редактирование: Только что видел это на HN: http://blog.astrails.com/2009/5/12/ruby-http-require, позволяет файлу ruby ​​включать другой файл через http вместо файловой системы.

1 голос
/ 17 мая 2009

Существует библиотека с именем ruby2c , которая компилирует подмножество Ruby в код C (который затем можно скомпилировать в собственный код, если хотите).

Первоначально он был написан как обфускатор кода Ruby (но с тех пор использовался для множества других вещей, включая Ruby Arduino development ).

1 голос
/ 16 мая 2009

Это не специфичная для языка проблема, которая может быть более эффективно решена с помощью программного обеспечения для контроля версий.

1 голос
/ 16 мая 2009

Я не думаю, что есть один. Ruby - это чисто интерпретируемый язык, что означает, что ruby ​​интерпретирует ваш исходный код напрямую для его запуска. Java скомпилирована, поэтому есть промежуточный байт-код (.class). Вы можете запутать свой рубин, если действительно хотите, но это, вероятно, больше проблем, чем стоит.

Однако, чтобы убедиться, что вы понимаете, свыше 95% Java можно декомпилировать обратно в исходный код, используя различные бесплатные утилиты, поэтому в действительности компиляция Java не намного лучше, чем распространение исходного кода Ruby.

1 голос
/ 16 мая 2009

Рубин

Динамический интерпретируемый язык программирования с открытым исходным кодом с упором на простоту и производительность.

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

Кстати, поиск "compiled ruby" в Google вернул несколько результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...