「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
利用geminabox搭建私有Gems源服务
1. 安装 geminabox
gem install geminabox
2 .创建 config.ru
require "rubygems"
require "geminabox"
Geminabox.data = "./geminabox-data" # ... or wherever
Geminabox.on_gem_received = Proc.new do |gem|
puts "Gem received: #{gem.spec.name} #{gem.spec.version}"
end
# Use Rack::Protection to prevent XSS and CSRF vulnerability if your geminabox server is open public.
# Rack::Protection requires a session middleware, choose your favorite one such as Rack::Session::Memcache.
# This example uses Rack::Session::Pool for simplicity, but please note that:
# 1) Rack::Session::Pool is not available for multiprocess servers such as unicorn
# 2) Rack::Session::Pool causes memory leak (it does not expire stored `@pool` hash)
use Rack::Session::Pool, expire_after: 1000 # sec
use Rack::Protection
run Geminabox::Server
3. 启动服务
ADMIN_API_KEY=admin rackup
Client 客户端使用(上传、下载)
上传
➜ mbgemfiles git:(develop) gem inabox cocoapods-generatex-2.0.1.1.gem --host http://127.0.0.1:9292
Pushing cocoapods-generatex-2.0.1.1.gem to http://127.0.0.1:9292/...
Gem cocoapods-generatex-2.0.1.1.gem received and indexed.
下载
私有gem的使用方式有三种:path, git, source
Gemfile文件配置:
source "https://gems.ruby-china.com/"
gem "cocoapods", "1.10.1"
# path 指向本地
gem "cocoapods-generatex", "2.0.1.1", path: "../gemfiles/"
# git 指向remote
gem "cocoapods-generatex", "2.0.1.1", git: "git@xxx/iOS/gemfiles.git", branch: 'develop'
gem "cocoapods-generatex", "2.0.1.1", git: "git@xxx/iOS/gemfiles.git", tag: '1.0'
gem "cocoapods-generatex", "2.0.1.1", git: "git@xxx/iOS/gemfiles.git", commit: 'xxss'
# 私有source
gem "cocoapods-generatex", "2.0.1.1", source: "http://127.0.0.1:9292"
划重点
Cocoapods安装自定义私有插件: 只支持source的方式
这就是是为啥搭建私有源的根本原因
path 和git 都不能安装成功,可以自行实验下。
pod plugins installed // 查看pod已安装的插件
➜ mbgemfiles git:(develop) pod plugins installed
Installed CocoaPods Plugins:
- cocoapods-bin : 0.1.31.24 (pre_install, post_install, and source_provider hooks)
- cocoapods-deintegrate : 1.0.4
- cocoapods-disable-podfile-validations : 0.1.1
- cocoapods-generatex : 2.0.1.1
- cocoapods-hmap-prebuilt : 0.0.7 (post_install and post_update hooks)
- cocoapods-plugins : 1.0.0
- cocoapods-search : 1.0.0
- cocoapods-stats : 1.1.0 (post_install hook)
- cocoapods-trunk : 1.4.1
- cocoapods-try : 1.1.0
- slather : 2.6.1 (post_install hook)
参考资料