【问题标题】:Rails 3: Including a plugin inside an engineRails 3:在引擎中包含插件
【发布时间】:2011-02-03 18:32:51
【问题描述】:

我知道这听起来有点疯狂,但我正在构建一个引擎,它将为多个应用程序提供支持和绑定,并且由于所有应用程序都将使用给定的插件,我想知道是否可以将插件放入引擎中。

所以我把它放在供应商/插件中,但它似乎没有加载。

我一直在玩autoload_pathsrequire,但是我没有成功。

有人知道这是否可能吗?或者你对我可以尝试什么有想法?

谢谢!

【问题讨论】:

  • 根据您的工作来定义“引擎”。
  • 我刚刚创建了标准 Rails 引擎,并将其作为 gem 添加到每个应用程序中。
  • 您使用的是什么版本的rails?在 rails 2.3.* 你可以在你的 environment.rb 中使用 config.plugin_paths = ["#{Rails.root}/vendor/plugins", "#{YOUR_PLUGIN_PATH}/vendor/plugins"]
  • 它是 Rails 3,所以我不能使用你的方法。我发现我可以通过将其 lib 路径添加到 $: 并需要 init.rb 文件来加载插件,但我不确定这是否正确,并且可能不适用于更复杂的插件。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-plugins


【解决方案1】:

经过一番摆弄,我发现这是可行的,而且似乎是正确的:

module MyEngine 
  class Engine < Rails::Engine 
    config.after_initialize do 
      Rails.application.config.paths.vendor.plugins.push File.expand_path('../../vendor/plugins', __FILE__) 
    end 
  end 
end 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多