【问题标题】:Ruby on Rails: patching Rack and deploying itRuby on Rails:修补 Rack 并部署它
【发布时间】:2010-11-01 15:14:35
【问题描述】:

我需要使用以下补丁来修补 Rack:http://github.com/rack/rack/commit/dae12e088592ee69545b5f2f81b87f4959859164

这样做的最佳做法是什么?我是否应该将 gem 解包,应用补丁,然后重新打包 gem 并将其与 capistrano 一起发送,以确保我的 gem 版本可以到达目标服务器?

我可以将 rack 弹出到 vendor/plugins/ 并依赖它在系统范围的 gem 之前首先加载吗?

我想走阻力最小的道路,并且能够轻松地将其部署到许多环境中。

【问题讨论】:

    标签: ruby-on-rails ruby rack


    【解决方案1】:

    如果您正在使用 bundler,则可以通过在 Gemfile 中添加一个选项来从存储库中安装 gem:

    gem 'rack', :git => 'git://github.com/my-account/rack.git'

    这使得修补和部署已修补的 gem 变得更加容易。将其分叉到您的帐户,对其进行修补,然后使用该基础。

    Rack 不是插件,它是 gem,所以如果安装在 vendor/plugins 中,它可能无法正常工作。

    【讨论】:

      【解决方案2】:

      或者,您可以从本地文件系统(例如vendor/ 子目录)加载 Bundler,而不是指向您的 git 存储库:

      gem 'rack', :path => File.join(File.dirname(__FILE__), '/vendor/gems/rack')
      

      这使您可以即时调试,而无需 git pull / push 您的更改。

      【讨论】:

        【解决方案3】:

        其他答案似乎需要 Bundler/Rails 3。由于我使用的是 Rails 2.3.10 和旧式 Rails config.gem 系统,它们对我不起作用。

        我能够为同样的问题找到一个可行的解决方案here。作者将 Rack 1.2 中的固定代码包含在 monkey patch for rack 1.1 中,然后通过初始化程序加载补丁文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-25
          • 2012-01-02
          • 2023-03-31
          • 2012-05-23
          • 2019-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多