Подтвердить что ты не робот

Система для организации многофайловых программ Ruby?

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

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

Однако в настоящее время код имеет класс (пусть он вызывает Searcher), который наследует каждый класс поиска протокола (GoogleSearcher < Searcher). Чтобы управлять этим, мне нужно включить основной файл в эти файлы протокола (правильно?), Который не представляется возможным, учитывая мою идеальную структуру.

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Помимо рекомендуемых ссылок в vonconrad Answer, вы можете обратиться к разделу "Организация вашего источника" в главе 16 Программирование Ruby 1.9 от Dave Thomas et al. Существует бесплатный образец 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

Ответ 4

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

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

Ответ 5

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

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

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

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