将 before_filter 从引擎添加到应用程序的方法

发布于 2024-12-03 11:27:51 字数 386 浏览 1 评论 0原文

如果没有很多具体的代码,这只是模糊的,但我会提供我能提供的。

给定一个 Rails 引擎、一个基本引擎,而不是在其自己的空间中可安装的引擎,我如何使引擎中的方法作为应用程序控制器的 before_filter 可供应用程序使用?

我一直在查看 Devise 代码,因为我想要的内容与我使用 Devise 的经历相似,但我承认我不明白我正在研究的很多内容。

如果我将 include Myengine::Mymodule 放在应用程序控制器中,我可以在其中使用可用于过滤的方法,但我希望可以只使用这些方法而不必包含模块。

这是尝试将 Rails 应用程序转变为可供多个 Rails 应用程序使用的引擎的最新障碍,并且任何有关处理正确命名空间、模块配置等的指导都值得赞赏。

Without a lot of specific code, this is just vague, but I'll provide what I can.

Given a rails engine, a basic engine and not a mountable engine in its own space, how do I make methods from the engine available to the application as a before_filter for the applications controllers?

I've been looking through the Devise code, because what I want to is similar from my experience with Devise, but I'll admit I don't understand a lot of what I'm going over.

I can do this if I put include Myengine::Mymodule in the apps controllers where I want to have the methods available for filtering, but I want it possible to just use the methods without having to include the modules.

This is the latest roadblock in trying to turn a rails application into an engine to be used by multiple rails apps, and any guidance on getting a handle on proper namespacing, module config, etc., is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南街九尾狐 2024-12-10 11:27:51

如果我理解正确,您可以使用初始化程序,例如:

module MyEngine
    class Engine < Rails::Engine
        initializer  "myengine.load_helpers" do
            ActiveSupport.on_load(:action_controller) do
                include MyEngine::Helpers
            end
        end
    end
end

If I understood you correctly you can use initializer, for example:

module MyEngine
    class Engine < Rails::Engine
        initializer  "myengine.load_helpers" do
            ActiveSupport.on_load(:action_controller) do
                include MyEngine::Helpers
            end
        end
    end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文