4

我不确定我是否可以问这个问题,但我绝对需要一个答案。我正在开发一个 Rails 项目——一个论坛——我想知道如何在其中实现“插件”。

基本上,我希望对编程或 ruby​​ on rails 不太了解的人能够向我的论坛添加功能(假设他们将我的论坛克隆到他们的服务器上)。一般的想法是

  • 插件将有自己的目录,如plugins,并在此目录中由插件名称分隔。
  • 我将能够运行这样的命令rake forum:plugins:install some-url,为他们下载并安装插件
  • 插件将能够修改/添加资产,以及更改视图、控制器或模型
  • 插件不会更改实际论坛的代码

在开始这个项目时,我的脑海里有一个想法,我可以应用一两个补丁来安装插件,但是当用户必须升级论坛时,这将是可怕的。

所以,我的问题是:

  1. 如上所述,我怎样才能实现我的插件?
  2. 使用 Rails 执行此操作是个好主意吗?

同样,我不确定这些问题是否被允许,但我想我会找出答案的。

澄清一下,我正在寻找一个类似于 SMF 的包功能的系统(它允许您在论坛软件本身上导入和安装插件/包)。我不是在寻找 Rails 本身的插件,而是在 Rails 上运行的应用程序(论坛)。

TL;DR:我正在寻找一种方法来修改 Rails 应用程序而不修改源代码。我不是在寻找 rails 2 插件或 ruby​​gems。

4

5 回答 5

2

在 Rails 中,大多数插件通常以gems的形式实现。

从上面的链接:

gem 是一个打包的 Ruby 应用程序或库。它有一个名称(例如 rake)和一个版本(例如 0.4.16)。

我会这样做。到目前为止,Gem 是创建您希望存在于多个应用程序中的功能的最常用方法。

另外:如何制作自己的宝石

于 2012-09-12T21:44:42.657 回答
1

好的,自从我问这个问题以来,一位朋友为我指出了一个方向。作为一个插件,我希望它能够将代码放入论坛,但作为一个单独的代码库;如在,它没有进入实际的代码。我的朋友指给我看Rails::Engine,起初这似乎不是我需要的。

使用Rails::Engine,我可以创建一个单独的目录,用我的“插件”或“插件”填充它,并且应用程序不会受到每个单独目录的影响。它还将使创建插件或插件变得容易。

于 2012-09-14T23:23:14.203 回答
0

改写答案:

再次阅读您的请求后,我有一个更好的答案。为什么不将 github 用于拥有主存储库并接受补丁的应用程序?如果人们精通技术,可以编辑模型、控制器、视图,那么他们应该足够精通,可以通过 github 创建补丁请求。这样您也可以轻松地批准它们。

于 2012-09-14T22:17:31.930 回答
0

功能标志可以帮助您让您的用户打开和关闭功能,尽管代码需要在部署的应用程序中。

于 2012-09-19T21:49:41.860 回答
-2

要安装新插件:

rails install PLUGIN [plugin_name]
于 2012-09-19T07:46:03.117 回答