У меня есть Rails Engine github_webhooks с модулем GithubWebhooks.
В движке у меня есть:
module GithubWebhooks
class EventController < ApplicationController
require 'octokit'
client = Octokit::Client.new(GithubWebhooks.access_token)
def destroy
...code here...
end
end
end
# pullrequest_controller.rb
и в lib / github_webhooks.rb,
require "github_webhooks/engine"
module GithubWebhooks
mattr_accessor :access_token
mattr_accessor :base_url
end
# github_webhooks.rb
В приложении Rails должен быть файл инициализатора под /config
, который позволяет пользователю ввести свой токен доступа OAuth (:access_token
) и базовый URL-адрес от POST
до (:base_url
).
Когда я пытаюсь подключить Rails Engine к своему приложению (sample_app
), я делаю следующее, что я понимаю как стандартная процедура:
Я помещаю эту строку в мой gemfile:
gem 'github_webhooks', git: 'https://github.com/path_to/my_repo'
# Gemfile
а потом в маршрутах пишу:
mount GithubWebhooks::Engine, at: "/github_webhooks"
# routes.rb
Я уже понял, как использовать переменные среды, поместив токен в файл .yml
, а затем с помощью gitignore безопасно разрешить пользователям фиксировать свои изменения в своем приложении, не включая свой токен в коммит. Я смог убедиться, что с помощью ENV [] я мог получить токен по мере необходимости. Так что это не актуальная проблема. Что подводит меня к настоящей проблеме.
Rails, похоже, не распознает имя моего движка, потому что кажется, что строка в файле маршрутов вызывает проблему. Выдает ошибку
/ home / mschneider25 / .rvm / gems / ruby-2.6.1 / gems / bootsnap-1.4.4 / lib / bootsnap / load_path_cache / core_ext / active_support.rb: 79: в блоке в load_missing_constant: неинициализированная константа GithubWebhooks (NameError)
Я не совсем уверен, почему говорится, что GithubWebhooks не инициализирован; это название модуля в Engine. Чего мне не хватает, чтобы Rails распознал мой движок и модули внутри него?