2011-07-23 50 views
13

我修改了我在Rails应用中使用的Gem,并且需要在Heroku上使用它。有没有办法在我的应用程序中将修改后的Gem上传到Heroku,并在我的Gemfile中指定一个自定义路径?Heroku上Gemfile中的自定义Ruby Gem

回答

22

您可以将自定义的宝石在vendor目录,然后在你的Gemfile指定它们:

gem 'gemname', '1.0', :path => 'vendor/gemname'

+1

这是改变轨道4,5看到您的废弃警告... 弃用警告:你在供应商/插件中有Rails 2.3风格的插件!在Rails 4.0中将会删除对这些插件的支持。将它们移出并将它们捆绑到Gemfile中,或者将它们作为lib/myplugin/*和config/initializers/myplugin.rb折叠到您的应用程序中。有关更多信息,请参阅发行说明:http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released。 (在/app/config/environment.rb:5) – Spasm

+0

中调用是的,实际上你可以将gem放在任何你想要的位置,并在Gemfile中指定该路径。 – NARKOZ

8
  1. 叉它在github
  2. 指向您的应用程序使用修改后的宝石:git的选项在Gemfile中指定Gem依赖关系时
+0

来自github的宝石包括完整的历史。随着时间的推移,它会占用大量的空间(想想30mb而不是3mb)。对于一些宝石来说很好,但随着时间的推移会加起来。 – Schneems

1

您可以设置一个自定义gem服务器,如Geminabox 。不幸的是,它是为局域网设计的,没有内置的认证。您可以通过Rack :: Auth中间件保护它,或者使用Rack :: Mount将其附加到秘密路径。如果这太繁琐,你可以使用私人宝石托管服务,如Gemfury(免责声明:我在这项服务上工作)。一旦你有任何的设置,只需添加以下到您的Gemfile:

中的Gemfile
source 'https://custom-gem-server.com/secret-token/' 
9

gem 'blah', :git => 'https://github.com/XXX/YYY.git'