【问题标题】:How to modify a Ruby gem如何修改 Ruby gem
【发布时间】:2011-04-01 16:00:13
【问题描述】:

如何修改现有的 *.gem 文件?我想修改 gem 中的 Rakefile,以便它能够在 Windows 上编译。

【问题讨论】:

    标签: ruby gem


    【解决方案1】:

    将其源代码下载到单独的文件夹中(可能来自 github)。然后修改您的 Gemfile 以直接指向源代码,以便您可以对其进行编辑并直接测试您的更改。

    例如,假设您要编辑secure_headers gem,并且您已将其克隆到~/workspace/secureheaders。然后您可以在 Gemfile 中使用以下内容:

    gem 'secure_headers', :path => "~/workspace/secureheaders"
    

    然后,只需修改源代码树中的源文件,您应该能够看到直接应用的更改。

    【讨论】:

    • +1 这是唯一完整描述如何测试修改后的源代码的答案
    【解决方案2】:

    你可以gem unpack它,添加你的修改,然后根据需要修改gemspec并重新构建它:

    【讨论】:

    • 这些现在都有重定向循环。
    • 猜猜我们现在永远不知道如何重建它
    • 对于未来的任何人:只需在 gem 解包期间生成 gem build <path/to/gemspecfile>
    【解决方案3】:

    较新版本的捆绑器允许您使用以下命令执行此操作:

    bundle open gem_to_edit
    

    这将在您的默认文本编辑器中打开 gem 代码。

    (提示:如果您使用的是 Mac OSX/Linux,您可以通过更改 $EDITOR 变量来指定您的默认文本编辑器。假设您使用的是 bash,您可以打开您的 ~/.bash_profile 并添加:export EDITOR='subl -w' 到将 Sublime Text 设置为默认编辑器)

    【讨论】:

      【解决方案4】:

      也许一种更可接受且对开源友好的方法是检查 gem 的源代码是否在 github 之类的东西上可用。然后创建 gem 代码的分支,进行更改并发送拉取请求。很有可能,其他人也想要该功能,而您的贡献将受到赞誉。

      【讨论】:

      【解决方案5】:

      如果您缺少 gem 的 gemspec,请使用以下命令提取它:

      gem spec my_gem --ruby > my_gem.gemspec
      

      当然,将 my_gem 替换为适当的 gem 名称。编辑生成的文件以使其适合(在一个示例中,我不得不删除导致错误的一行),您应该一切顺利。

      【讨论】:

      • 谢谢!这很关键
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2020-12-25
      • 2016-10-30
      • 1970-01-01
      相关资源
      最近更新 更多