#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, и это похоже на то, что мне нужно, но мне все еще неясно следующее:
- Как вы разрабатываете каждый модуль движка (аутентификацию пользователя, электронную почту, адресную книгу) отдельно без общего базового приложения?
- Как вы разрабатываете модуль адресной книги, когда для него требуется аутентификация пользователя, которая вообще является отдельным модулем?
Я предполагаю, что сначала вы разрабатываете аутентификацию пользователя и включаете ее в фиктивное приложение модуля engine, но я путаюсь с пространством имен движка.
Возможно, было бы полезно отметить, что я имею опыт работы с C # и я новичок в веб-разработке.
Ответ №1:
Люди уже написали плагины аутентификации и отправки по электронной почте. Для большинства приложений единственная работа, которую нужно выполнить для этих модулей, — это настройка.
Возможно, вам захочется написать движок для совместного использования некоторых настроек и некоторых функций адресной книги. В этом случае вы можете рассмотреть возможность разработки примера приложения, в котором как можно меньше пользовательского кода, чтобы четко определить API адресной книги.
Комментарии:
1. Когда вы так это формулируете, это звучит просто: P Тем не менее, у вас есть точка зрения, и все мои исследования начали указывать на это. Я должен сосредоточиться на создании достойного API для каждого модуля. Если я включу плагин с «gem ‘mypath'» в свой Gemfile и внесу изменения в плагин, знаете ли вы, будет ли это изменение автоматически обновляться в приложении, в которое оно включено?
2. Я думаю, вы указываете на путь, по которому он будет получать изменения по мере их внесения (по крайней мере, в том, что касается bundler), но я бы перепроверил. Однако из-за загрузки / перезагрузки кода rails вам часто придется перезапускать ваш rails-сервер, чтобы получить изменения, если вы не внесете некоторые изменения в конфигурацию.
3. Спасибо. Это имеет смысл. По крайней мере, теперь у меня есть место, с которого можно начать дальнейшие исследования 🙂