Как включить контроллер с гемом Ruby on Rails? - PullRequest
8 голосов
/ 31 декабря 2011

Я пытаюсь внести свой вклад в проект с открытым исходным кодом, и мне нужен контроллер для обработки пары форм, которые необходимо отправить.

Я создал эти контроллеры в каталоге внутри гема с именем app/controllers/gemname/my_controller.rb.

Однако, когда я пытаюсь получить доступ к контроллеру, он, кажется, не загружается (я получаю ошибку имени, как будто я набрал что-то вроде NonExistentController).

Как мнезагрузить мой контроллер драгоценным камнем?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 31 декабря 2011

Предположим, ваш драгоценный камень называется MyGem, и у вас есть контроллер с именем SuperController, который вы хотите использовать в приложении.Ваш контроллер должен быть определен как:

module MyGem
  class SuperController < ApplicationController
    def whatever
      ...
    end
  end
end

и в вашем каталоге gem он должен находиться в app/controllers/my_gem/super_controller.rb ( не в папке lib).Посмотрите на источник для Devise , поскольку они делают то же самое.

[Редактировать] Вы можете узнать кое-что из Руководство по запуску вашего собственного движка Rails Engine Gem относительно вашеготекущий проект.

0 голосов
/ 26 апреля 2013

Руководство в ответе Брэндона очень полезно, но относится только к рельсам 3.0. Начиная с 3.1 вы можете создать плагин. Как это: rails plugin new my_engine --mountable

См. Это полезное руководство:
http://namick.tumblr.com/post/17663752365/how-to-create-a-gemified-plugin-with-rails-3-2-rspec
(> Rails 3.0)

Официальный путеводитель по рельсам (край):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html

Старый двигательx:
https://github.com/josevalim/enginex
(Только 3.0)

...