Система организации многофайловых Ruby-программ? - PullRequest
22 голосов
/ 04 января 2010

Существует ли стандартная или обычная система для организации многофайловых программ на Ruby?Я начал свой первый большой «проект» в Ruby, поисковой программе, которая логически организована в несколько файлов и каталогов.Ниже я обрисовал свою потенциальную структуру:

  • Основной файл .Этот файл реализует класс поиска и общий протокол поиска.
  • Файл алгоритмического анализа .Этот файл реализует функции, которые интерпретируют результаты поиска.
  • Каталог протоколов
    • Содержит один файл на протокол для поиска.
  • Каталог каналов
    • Часть программы предназначена для поиска в архивированных новостных лентах.Файлы для этой функции находятся в этой папке.

Однако в настоящее время в коде есть класс (назовем его Searcher), от которого наследуется класс поиска каждого протокола (GoogleSearcher

Помимо моего конкретного примера, мне было интересно, есть лилюбые соглашения, такие как «больше файлов, чем меньше» или «логическое структурирование файлов не требуется».Распространено ли иметь файл «вспомогательных» функций (например, в Rails?) Какой уровень абстракции считается подходящим?

Наконец, я планирую когда-нибудь интегрировать это в Rails как библиотеку (неплагин, я хочу, чтобы он работал автономно).Я не знаю, повлияет ли это на организацию.

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

Ответы [ 5 ]

11 голосов
/ 05 января 2010

Вы можете рассмотреть возможность создания драгоценного камня для вашей библиотеки. Это упростит использование библиотеки как автономно, так и с Rails, а также упростит развертывание / обновление.

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

Существует множество документов для создания драгоценных камней. Здесь немного больше информации о файловой структуре, а также другие полезные советы.

8 голосов
/ 20 мая 2011

Помимо рекомендуемых ссылок в Ответе фонконрада, вы можете обратиться к разделу «Организация вашего источника» в главе 16 Программирование на Ruby 1.9 Дейва Томаса и др. бесплатный образец PDF этой части книги .

В главе упоминается:

16.1 Пространства имен Мы уже сталкивались с тем, что Ruby помогает вам управлять именами вещей в ваших программах. Если вы определили методы или константы в классе, Ruby гарантирует, что их имена могут использоваться только в контексте этого класса

16.2 Организация вашего источника Небольшие автономные сценарии могут находиться в одном файле ... более крупные программы должны учитывать систему RubyGems

anagram/ <- top-level
  bin/ <- command-line interface goes here
  lib/ <- three library files go here
  test/ <- test files go here
2 голосов
/ 05 января 2010

Возможно, вы захотите взглянуть на Идеальная структура проекта ruby ​​ в сочетании с рекомендациями vonconrad. Драгоценный камень определенно будет хорошим местом для старта, и пробежка по официальной документации rubygems также может быть полезной.

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

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

Я согласен с тем, что было сказано выше: гемы - отличный способ организовать и повторно использовать код. В дополнение к ссылкам выше, могу я порекомендовать использовать Bundler для создания драгоценных камней, как указано в этом Райан Бейтс RailsCast: http://railscasts.com/episodes/245-new-gem-with-bundler

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

Что касается наследования, проверьте, как могут использоваться миксины Ruby для инкапсуляции и повторного использования кода. через разнородные иерархии классов. http://ruby -doc.org / документы / ProgrammingRuby / html / tut_modules.html

0 голосов
/ 04 января 2010

Если вы хотите интегрироваться с Rails, вы, вероятно, захотите создать плагин.

Это руководство может быть хорошим началом: http://guides.rubyonrails.org/plugins.html

...