【问题标题】:How to create a Rails mountable engine that is the root application itself?如何创建作为根应用程序本身的 Rails 可挂载引擎?
【发布时间】:2014-01-08 12:51:49
【问题描述】:

我正在创建一个Blog 可挂载引擎,人们将把它用作他们的完整应用程序。

如果当前有人将我的 gem 添加到他们的 Rails 应用程序中,它将在他们网站的 /blog url 下工作(因为引擎是命名空间的)。

如何让他们只使用 gem 作为他们的整个应用程序?

即他们在 gem 文件中包含 gem "Blog",他们的 http://example.com/ 显示 gem 提供的应用程序。

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-engines


    【解决方案1】:

    原来是最简单的事情。所需要的只是路线中的这个:

    mount Blog::Engine => "/"

    【讨论】:

      【解决方案2】:

      这对于routing concern(Rails 4 中新引入的)可能是一个很好的例子。它们的作用是允许您捆绑和重用一组路由。因此,对于一个非常简单的博客应用程序,您可能会拥有这样的东西:

      concern :bloggable do
        resources :articles do
          resources :comments
        end
      end
      

      所有特定于您的 gem 的路由都可以进入 bloggable 关注点。将其注入应用程序的默认方式如下所示:

      scope :blog do
        concerns :bloggable
      end
      

      这将提供您已经拥有的行为 - 所有与 blog/ 目录下的博客关联的路由。但是,这很容易让用户更改它。要按照您的建议将其放在根范围内,用户必须将 concerns :bloggable 添加到其路由文件的基本范围内,它将按预期工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        相关资源
        最近更新 更多