<iOS>Cocoapods进阶之搭建rubygems私有源

342 阅读1分钟

「这是我参与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)

参考资料