Каковы лучшие практики повторного использования кода между различными проектами Ruby? - PullRequest
6 голосов
/ 01 декабря 2011

ребята!

Я разработчик программного обеспечения с фоном Java и начинаю некоторые проекты с использованием веб-фреймворка Ruby (Padrino / Sinatra).

В моих Java-проектах у меня обычно было несколько «общих» проектов, классы которых использовались в нескольких проектах. Например, у меня была центральная служба аутентификации и общая база данных, в которой хранились профили пользователей. Все мои проекты, которые использовали этот сервис, использовали несколько моделей, сопоставленных с базой данных профиля пользователя.

Итак, несмотря на каркас, orm lib и т. Д., Как лучше всего делиться кодом между несколькими проектами Ruby?

Ответы [ 2 ]

4 голосов
/ 01 декабря 2011

Кроме этого, gems ruby ​​ является одним из лучших способов повторного использования общих частей кода.У драгоценных камней есть имена, номера версий и описания, и поэтому вы можете легко поддерживать актуальные версии этих библиотек, устанавливать и удалять, управлять локальными установками драгоценных камней на вашем компьютере с помощью команды gem, доступной из командной строки.Gems стали стандартными с Ruby 1.9, но перед этим вы должны использовать строку require 'rubygems' в скриптах.Есть несколько инструментов, которые помогают создавать их, например, bundler .Bundler не только инструмент для создания гемов, но и замечательный менеджер зависимостей приложения.

0 голосов
/ 01 декабря 2011

Поместите ваш код в файл something.rb и require вверху других ваших скриптов.

Вы также можете использовать load вместо require, но require имеет приятное свойство, что он не будет включать файл более одного раза.Кроме того, для использования load требуется расширение .rb, тогда как для require нет, т. Е.

#some_script.rb
puts('hello world')

#another script
require 'some_script'
>> hello world

load 'some_script'
LoadError: no such file to load -- some_script
    from (irb):2:in 'load'
    from (irb):2

Вы почти всегда будете использовать require, но load также является опцией, еслиВы хотите использовать его по ... любой причине.

...