【发布时间】:2020-10-27 13:49:47
【问题描述】:
这是我第一次与 Rails 插件交互,我无法理解它是如何工作的。我将制作一个 Rails 插件/引擎。我想在我的 Rails 应用程序(一个不同的项目)中包含这个插件,我该怎么做?我发现this 建议
在这个全新引擎目录的根目录下有一个 plugin_name.gemspec 文件。当您稍后将引擎包含到应用程序中时,您将在 Rails 应用程序的 Gemfile 中使用此行:
gem 'plugin_name', path: 'engines/plugin_name'
我的问题是我该怎么做?我的意思是当我创建一个 Rails 应用程序时,我在文件夹结构中找不到任何 engines 目录。还有我必须将插件项目中的哪些目录放在engines/ 目录中?
我通过这样做创建了一个插件
rails plugin new plugin_name --mountable
它生成了以下文件/目录:
|-app/
|-bin/
|-config/
|-demo_project.gemspec
|-Gemfile
|-Gemfile.lock
|-lib/
|-MIT-LICENSE
|-Rakefile
|-README.md
|-test
|-dummy
|-(contains a rails application)
现在,一旦我完成了这个插件,如何将它包含在另一个 Rails 应用程序中?除了在 gemfile 中包含插件之外,我还需要在 engines/ 中放入哪些目录?
除此之外,我还想了解以下内容的一些信息
此外,
--mountable选项告诉生成器将引擎安装到位于test/dummy的虚拟测试应用程序中,方法是将以下内容添加到位于test/dummy/config/routes.rb的虚拟应用程序的路由文件中:
mount PluginName::Engine => "/plugin_name"
当插件被包含在 Rails 应用程序中后,挂载点表示什么以及它的作用是什么?
【问题讨论】:
标签: ruby-on-rails rubygems ruby-on-rails-5 rails-engines ruby-on-rails-plugins