代码之家  ›  专栏  ›  技术社区  ›  troelskn

如何为Rails3/Bundler销售宝石

  •  47
  • troelskn  · 技术社区  · 14 年前

    在Rails2.X中,我可以简单地将gems复制到 vendor/gems/gem_name ,或使用rake命令 rake gems:unpack bundle package ,但工作方式不同。

    编辑:

    Rails2的工作方式,我可以很容易地 格雷普 vendor/gems . 如果把它们捆在一起 .gem 文件,那是不可能的。另外,在开发gem/插件时,将它放在rails应用程序中,在上下文中测试它是非常有用的。我如何使用bundler/rails3做这些事情?我的工作流程是不是天生就坏了?

    5 回复  |  直到 14 年前
        1
  •  110
  •   troelskn    12 年前

    回答问题的第二部分,开发一个插件/gem并将其与rails应用程序一起发布,而不公开gem,您可以这样做

    gem 'my_private_gem', :path => "vendor/gems/my_private_gem-VERSION"
    

    假设你做了一个 gem unpack my_private_gem --target vendor/gems

    注: 打开所有宝石(尽可能多)Gemfile.lock文件). 我可不想把那些放在git里。

        2
  •  27
  •   John Topley    14 年前

    捆绑机等价物 bundle package . 它将Gemfile中指定的所有.gem文件打包到 vendor/cache http://rubygems.org/

        3
  •  23
  •   Matijs van Zuijlen    13 年前

    正确的捆绑机等价物是 bundle install --deployment . 这将安装宝石,在其未包装的状态,在 vendor/bundle .

        4
  •  5
  •   jsears    8 年前

    gem unpack <GEM_NAME> [-v <VERSION>] --target vendor/gems
    gem specification <GEM_NAME> [-v <VERSION>] --ruby > vendor/gems/<GEM_NAME>[-<VERSION>].gemspec
    

    例如:

    gem unpack sidekiq-pro -v 2.1.4 --target vendor/gems
    gem specification sidekiq-pro -v 2.1.4 --ruby > vendor/gems/sidekiq-pro-2.1.4.gemspec
    

    第一个命令将gem解压到vendor/gems目录中。但是,它不包含gemspec。第二个命令创建关联的gemspec。值得注意的是,另一张海报也提到了类似的事情。此解决方案正确地以ruby格式而不是yaml格式编写gempec。

    然后,您可以更新gem文件以指向卖方gem:

    gem '<GEM_NAME>', '<VERSION>', :path => "vendor/gems/<GEM_NAME>-<VERSION>"
    

    例如:

    gem 'sidekiq-pro', '2.1.4', :path => "vendor/gems/sidekiq-pro-2.1.4"
    
        5
  •  0
  •   Alex Fortuna    12 年前

    考虑使用 hosted_gem_development

    “托管”开发基础设施通过将gem包含到(使它们“托管”)您的实时应用程序中,使gem开发更加容易。然后像更新常规应用程序代码一样更新gem的代码。

    Go to project page