【问题标题】:How to use the plugins within the vendor folder instead of the gems in rails?如何使用 vendor 文件夹中的插件而不是 rails 中的 gems?
【发布时间】:2011-11-13 03:00:05
【问题描述】:

我有一个场景,我需要修改插件中的某些功能。所以我想我可以更改vendor/plugins/ 文件夹中的文件。但后来我意识到我安装的 gems 代码已被 rails 使用,而不是 vendor/plugins/。我想从我的gemlist 中删除 gem,但这会引发错误。那么如何重定向我的 Rails 以使用 vendor/plugins/ 文件夹中的插件而不是我的 gem?

【问题讨论】:

    标签: ruby-on-rails rubygems ruby-on-rails-3.1


    【解决方案1】:

    试试看,bundler doc:

    gem [gem name], :path => [path]
    

    例如:

    gem "rails", :path => "vendor/rails"
    

    【讨论】:

      【解决方案2】:

      尝试猴子补丁而不是直接修改插件/宝石。我在 lib/ 文件夹中修补它们并在我的环境中 config.auto_load 它。这还不错,只要确保它在相同的模块中,并且具有相同的方法名称即可。例如,要覆盖字符串方法,您可以执行以下操作:

      class String
        def method_to_override
          do_something
          super # if you want to still use the original method
        end
      end
      

      我建议尽量避免直接修改任何内容。

      另外,如果我使用捆绑的 gem,我通常会捆绑 exec 命令,但我认为这仍然会将 gem 加载到我选择的路径之外。我最近很少使用插件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-13
        • 1970-01-01
        • 2013-07-06
        • 2017-07-27
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 2020-08-10
        相关资源
        最近更新 更多