首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rails应用程序中包含插件/引擎?

如何在rails应用程序中包含插件/引擎?
EN

Stack Overflow用户
提问于 2020-10-27 13:49:47
回答 1查看 479关注 0票数 2

这是我第一次与rails插件交互,我无法理解这个东西是如何工作的。我要做一个rails插件/引擎。我想把这个插件包括在我的rails应用程序中(一个不同的项目),我怎么做呢?我找到了,它建议

在这个全新引擎目录的根目录下,有一个plugin_name.gemspec文件。稍后将引擎包含到应用程序中时,将在Rails应用程序的Gemfile中使用以下行完成此操作:

代码语言:javascript
复制
gem 'plugin_name', path: 'engines/plugin_name'

我的问题是我到底该怎么做?我的意思是,当我创建一个rails应用程序时,我在文件夹结构中找不到任何engines目录。另外,我还必须将插件项目中的哪些目录放在engines/目录中?

我创建了一个插件

代码语言:javascript
复制
rails plugin new plugin_name --mountable

它生成了以下文件/目录:

代码语言:javascript
复制
|-app/
|-bin/                
|-config/
|-demo_project.gemspec
|-Gemfile
|-Gemfile.lock
|-lib/
|-MIT-LICENSE
|-Rakefile
|-README.md
|-test
  |-dummy
    |-(contains a rails application)

现在,一旦我完成了这个插件,如何将其包含在另一个rails应用程序中?除了在the文件中包含插件之外,我还需要在engines/中放置哪些目录?

此外,我还想要一些关于以下内容的信息

此外,--mountable选项告诉生成器在位于test/dummy的虚拟测试应用程序中挂载引擎,方法是将以下内容添加到虚拟应用程序位于test/dummy/config/routes.rb的路由文件中:

代码语言:javascript
复制
mount PluginName::Engine => "/plugin_name"

挂载点表明了什么,当插件包含在rails应用程序中之后,它将扮演什么角色?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-27 15:48:21

Rails引擎是一个独立的rails应用程序,安装在主应用程序中。创建引擎的两个主要原因是应用程序部分的隔离(可能是将应用程序分割成碎片)和代码重用(当您在多个应用程序中使用相同的引擎时)。

从技术上讲,它是一个红宝石,但引擎通常会作为一个大型应用程序的一个独立部分启动(和运行),而不会完全提取到自己的存储库、创业板发布等。例如,如果应用程序中有admin部分,则可以将其作为一个引擎:

代码语言:javascript
复制
# in gemfile:
gem 'admin', path: 'engines/admin'

# routes:
mount Admin::Engine => '/admin'

# engine's routes:
resources :foo # => because of being in an engine this will be /admin/foo

目录结构可以如下所示:

代码语言:javascript
复制
|-app/
|-bin/
|-...
|-config/
  |-application.rb
  |-routes.rb
|-engines/
  |-admin_engine/
    |-app/
      |-controllers/admin/
          |- foo_controller.rb
    |-config/
      |-routes.rb # <- this is engine's routes
    |-lib/
      |-admin/
        |-engine.rb
    |- admin.gemspec
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64555911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档