gpt4 book ai didi

ruby-on-rails-3 - rails 3.1.1 引擎 - 使用可安装的引擎,是否可以访问父应用程序 Assets 、默认布局?

转载 作者:行者123 更新时间:2023-12-04 15:36:36 24 4
gpt4 key购买 nike

这更多是为了实验 - 我知道我可以用 --full 来做到这一点,但我希望应用程序中的命名空间功能避免冲突

这个想法是有一个主应用程序 - 处理身份验证、常用项目、管理屏幕等
然后创建引擎以添加更多功能,例如

  • 客户关系管理
  • 厘米
  • 博客
  • 维基
  • 论坛

  • 我可以根据需要为我正在构建的任何类型的应用程序挑选这些引擎。
    这可能吗?

    是否只是同时应用 --mountable 和 --full 选项的情况?

    试验 - 如果我使用完整选项添加 rspec 然后简单添加会不会有任何问题
    rails plugin new plugin_name --skip-test-unit --full --dummy-path=spec/dummy

    并在 lib\plugin_name\engine.rb
    module PluginName
    class Engine < Rails::Engine

    # this is added by rails when an engine is mountable
    # to isolate the plugin and prevent name clashes
    isolate_namespace PluginName

    # one of the additions to make rspec work from command line for the plugin
    config.generators do |g|
    g.test_framework :rspec, :view_specs => false
    end
    end
    end

    我已经创建了 --full 和 --mountable 引擎,并且 rspec 最终为任何阅读有一些很棒的文章的人工作(见下文),但想知道这样做对我正在尝试创建的解决方案的更广泛影响

    我仍在玩这个并将发布我的发现..
    任何帮助/讨论将不胜感激。

    请注意
  • 为什么我要这样做 - 构建一次使用多次...
  • 我永远不会希望非技术/客户添加“插件/引擎” - 这纯粹是为了娱乐第 1 点。

  • 我遇到的问题...
  • 在顶级应用程序上运行服务器。只有从引擎访问内容时,(我可以通过错误消息看到)我有一个路由问题(root_path 未定义或设计路由丢失) - 父应用程序布局正在呈现,我可以在提取的错误源中看到它.进步,但还没有雪茄!

  • 有用的引用资料
  • Engines vs Mountable Apps
  • 3.1 engines with rspec
  • testing rails 3 engines
  • Listing Routes in a Mountable engine
  • 最佳答案

    我设法通过以下步骤使其工作:

  • 在我的父应用程序中,我在 routes.rb 中安装了引擎
    mount PluginName::Engine => '/plugin_name'

    我刚刚删除了它。
  • 按照下面的 Ryan Bigg 的说法创建了一个应用程序 Controller 。
    class PluginName::ApplicationController < ApplicationController
    ...
    end
  • 由于我希望在生成 Controller 、模型、测试时将名称间隔开,因此您必须基本上注释掉 isolate_namespace PluginName lib\plugin_name\engine.rb 当我希望 gem 在父应用程序中运行时。

    这还不是一个理想的解决方案。在我的头上,我可以使用类似的东西:
    isolate_namespace PluginName if %w[development testing].include?(Rails.env)

    但必须测试这是否可行。

  • 感谢 Ryan 帮助我找到了自己的路,非常感谢

    此外,同样可以用 --mountable 开关版本来完成,你需要做的就是在你的引擎 config/routes.rb 中再做一步替换
    PluginName::Engine.routes.draw do


    Rails.application.routes.draw do

    关于ruby-on-rails-3 - rails 3.1.1 引擎 - 使用可安装的引擎,是否可以访问父应用程序 Assets 、默认布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723303/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com