Pull to refresh

Comments 21

Для начала не плохо. Но, всю соль вы не раскрыли и боюсь, новых рубистов этим не заманишь и человека не посвященного в ruby не удивишь.

Я прочитал с удовольствием, спасибо.
Полагаю автор не преследовал цели привлечь этой статьей новых рубистов. Тем не менее, получилось познавательно
Хорошая статья, спасибо. А то всё как-то по кускам узнаешь. А теперь есть целостное представление… хотя бы о гемах :-) Напишите про RVM, гемсетах и bundle?
Да, есть в планах)
> получение деталей

Details по-русски подробности.
«И где то вы слышали, что есть замечательная библиотека ...» — ага, нормальный такой подход к разработке…
спасибо. еще бы отдельную статью о создании своих гемов
1) в ruby 1.8 просто require сделать нельзя, пока не сделаете
require 'rubygems'
;
2) вовсе не обязательно, а иногда невозможно, сделать
require 'имя гема'
(файла может не быть, если не предусмотрено автором гема), но всегда можно сделать
require 'любой файл из каталога библиотеки гема'
;
3) обязательно надо упомянуть, что rubygems заведует и вопросами построения кода на C etc., если оный требуется для функционирования гема (native extensions).
Спасибо за дельный комментарий, а где можно почитать про 3 пункт поподробнее?
Еще одно замечание для авторов гемов, — никогда нельзя полагаться на то, что каталог с бинарниками гема находится рядом с каталогом библиотеки гема. В разных операционных системах и в разных версиях/сборках rubygems местоположение может меняться.

Если нужно знать расположение библиотечных файлов, создайте соответствующий файл (к примеру, lib/yourgem/executor.rb) в библиотеке, и используйте
LIBPATH = File.expand_path('..', File.dirname(__FILE__)).freeze
внутри него.

А из бинарника просто делаете
require 'rubygems'
require 'yourgem/executor'
puts LIBPATH
.
Спасибо. Можно ждать от вас топик best practices по написанию гемов?
не вижу особого смысла. тут основные подводные камни уже описал :)
Хотя, в принципе, смысл есть. Напишу.
$ gem -v
1.6.2
$ gem query --details --remote --name-matched build
ERROR: While executing gem ... (OptionParser::InvalidOption)
invalid option: --name-matched
$ gem query --details --remote --name-matches build

*** REMOTE GEMS ***

.......
Спасибо! теперь имею представление о гемах )

Товарищи Ruby девелоперы, подскажите пожалуйста хорошую книжку новичку в Ruby
Sign up to leave a comment.

Articles