Rails 3.1 — разработка с помощью монтируемых движков

#ruby-on-rails #ruby-on-rails-3.1 #rails-engines

#ruby-on-rails #ruby-on-rails-3.1 #rails-движки

Вопрос:

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

Я смотрел трансляцию Mountable Engines Railscast, и это похоже на то, что мне нужно, но мне все еще неясно следующее:

  1. Как вы разрабатываете каждый модуль движка (аутентификацию пользователя, электронную почту, адресную книгу) отдельно без общего базового приложения?
  2. Как вы разрабатываете модуль адресной книги, когда для него требуется аутентификация пользователя, которая вообще является отдельным модулем?

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

Возможно, было бы полезно отметить, что я имею опыт работы с C # и я новичок в веб-разработке.

Ответ №1:

Люди уже написали плагины аутентификации и отправки по электронной почте. Для большинства приложений единственная работа, которую нужно выполнить для этих модулей, — это настройка.

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

Комментарии:

1. Когда вы так это формулируете, это звучит просто: P Тем не менее, у вас есть точка зрения, и все мои исследования начали указывать на это. Я должен сосредоточиться на создании достойного API для каждого модуля. Если я включу плагин с «gem ‘mypath'» в свой Gemfile и внесу изменения в плагин, знаете ли вы, будет ли это изменение автоматически обновляться в приложении, в которое оно включено?

2. Я думаю, вы указываете на путь, по которому он будет получать изменения по мере их внесения (по крайней мере, в том, что касается bundler), но я бы перепроверил. Однако из-за загрузки / перезагрузки кода rails вам часто придется перезапускать ваш rails-сервер, чтобы получить изменения, если вы не внесете некоторые изменения в конфигурацию.

3. Спасибо. Это имеет смысл. По крайней мере, теперь у меня есть место, с которого можно начать дальнейшие исследования 🙂