我如何部署我的应用可以访问的"私人"宝石,但没有其他人可以获得?

Kev*_*ell 21 ruby deployment rubygems ruby-on-rails heroku

我有几个应用程序,我想分享一些常见的代码.虽然我不想将代码发布到公共gem服务器上,但我想在代码中创建代码并在应用程序中共享/版本.

有哪些选择?

Ril*_*ton 10

这似乎很有希望:

https://github.com/cwninja/geminabox/

虽然我自己没有使用它,所以我不能保证它.但是,我最近在官方的Rubygems Q&A网站上阅读了一个帖子,其中提到内置rubygems托管不是推荐的解决方案,Geminabox是一个很好的选择.

请注意,它没有任何身份验证或安全性(显然除非通过默默无闻),因此根据这些宝石的敏感程度,您可能希望自己添加一些内容(甚至只是按IP地址列入白名单).


nth*_*thj 10

我想,GemFury就是你所追求的.


sup*_*ary 8

这样做的方法是将gem解压缩到vendor/gems目录中.然后告诉Bundler在正常情况下使用Gemfile在哪里找到它.

首先将gem解压缩到vendor/gem.我假设您已经下载了宝石并坐在您面前的开放目录中.

gem unpack your_gem.gem --target /path_to_rails_app/vendor/gems/.
Run Code Online (Sandbox Code Playgroud)

现在用这样的行更新你的Gemfile:

gem 'your_gem', :path => "#{File.expand_path(__FILE__)}/../vendor/gems/your_gem"
Run Code Online (Sandbox Code Playgroud)

最后,使用Bundler安装它并更新您的Gemfile.lock

bundle install
Run Code Online (Sandbox Code Playgroud)

您现在已在Rails应用程序中安装了gem的本地副本.

您现在可以通过维护符号链接,Git子模块或子树以您喜欢的方式在您的应用程序之间共享gem.


jon*_*nii 5

我的建议是使用bundler,私有git repo和git + ssh依赖.唯一的问题是你需要找到一种管理ssh密钥的方法,因为目前我不相信bundler支持缓存ssh密钥.您可以使用https:// username:password @ myrepo .... style语法,但我还没有尝试过.

不要忘记,您始终可以选择使用bundle package包装宝石进行部署.

我希望这有帮助!