一、开发 Ruby
库
gem install bundle
复制代码
cd /Users/mac/Desktop
复制代码
1、创建 想要开发的 Ruby
库的框架
bundle gem 名称
复制代码
bundle gem bwgem
复制代码
- 桌面生成
bwgem
文件夹, 里面自动生成了一些文件
cd bwgem
复制代码
MACdeiMac:bwgem mac$ tree
.
├── CODE_OF_CONDUCT.md
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
│ ├── console
│ └── setup
├── bwgem.gemspec
└── lib
├── bwgem
│ └── version.rb
└── bwgem.rb
3 directories, 10 files
复制代码
tree
工具可以使用homebrew
安装, 执行brew install tree
2、查看Gemfile
文件
source "https://rubygems.org"
gemspec
gem "rake", "~> 13.0"
gem "rubocop", "~> 1.7"
复制代码
- 可以看到, 在
Gemfile
中会加载gemspec
, 就是生成的 bwgem.gemspec
文件
- 也就是说, 通过
bundle install
安装的内容, 就在bwgem.gemspec
文件中配置
3、实现自定义功能
- 查看
lib
文件夹中的bwgem.rb
文件, 可以看到自动生成了模块Bwgem
require_relative "bwgem/version"
module Bwgem
class Error < StandardError; end
end
复制代码
- 在
lib
文件夹中创建文件write_file.rb
文件, 并编写如下代码
module Bwgem
class Writer
def initialize(write_file_path, content)
File.open(write_file_path, "w+") { |f| f.write(content) }
end
end
end
复制代码
- 然后在
bwgem.rb
文件中导入write_file.rb
文件
require_relative "bwgem/version"
module Bwgem
class Error < StandardError; end
require 'write_file'
end
复制代码
4、在 bin
文件夹中 创建属于自己的工具
- 将
bin
文件夹中自动生成的两个文件console
和setup
删除
rm -rf console
rm -rf setup
复制代码
- 在
bin
文件夹中创建属于自己的工具文件, 我这里取名为bwtest
5、编写 gemspec
文件
require_relative "lib/bwgem/version"
Gem::Specification.new do |spec|
spec.name = "bwgem"
spec.version = Bwgem::VERSION
spec.authors = ["TODO: Write your name"]
spec.email = ["TODO: Write your email address"]
spec.summary = "TODO: Write a short summary, because RubyGems requires one."
spec.description = "TODO: Write a longer description or delete this line."
spec.homepage = "TODO: Put your gem's website or public repo URL here."
spec.license = "MIT"
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
spec.metadata["homepage_uri"] = spec.homepage
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
spec.files = Dir.chdir(File.expand_path(__dir__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
end
复制代码
require_relative "lib/bwgem/version"
Gem::Specification.new do |spec|
spec.name = "bwgem"
spec.version = Bwgem::VERSION
spec.authors = ["伯文"]
spec.email = ["邮箱"]
spec.summary = "描述"
spec.description = "详细描述"
spec.homepage = "https://www.baidu.com"
spec.license = "MIT"
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
spec.files = Dir["lib/**/*.rb"] + %w{ bin/bwtest README.md LICENSE.txt }
spec.executables = %w{ bwtest }
spec.require_paths = %w{ lib }
end
复制代码
6、在自定义工具中编写自定义功能
- 找到
bin
文件家中的bwtest
文件, 编写自定义功能
#!/usr/bin/env ruby
require 'bwgem'
puts "这是一个简单的 Ruby 库"
Bwgem::Writer.new(ARGV[0], ARGV[1])
复制代码
bwtest
中的功能是: 在调用时, 传入两个参数, 第一个参数是文件路径, 第二个参数是需要写入文件中的内容
7、执行自定义工具
bundle install
复制代码
bundle exec bwtest /Users/mac/Desktop/txt 'hello world!'
复制代码
这是一个简单的 Ruby 库
复制代码
- 同时桌面生成
txt
文件, 内容是hello world!
二、将开发的 Ruby
库上传至 RubyGems
1、将开发的工具
推送到远程git
仓库
- 在执行
bundle gem bwgem
时, 就自动生成了本地的git
仓库
require_relative "lib/bwgem/version"
Gem::Specification.new do |spec|
spec.name = "bwgem"
spec.version = Bwgem::VERSION
spec.authors = ["bwwen"]
spec.email = ["[email protected]"]
spec.summary = "描述"
spec.description = "详细描述"
spec.homepage = "https://gitee.com/lingtian.com/bwgem.git"
spec.license = "MIT"
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
spec.files = Dir["lib/**/*.rb"] + %w{ bin/bwtest README.md LICENSE.txt }
spec.executables = %w{ bwtest }
spec.require_paths = %w{ lib }
end
复制代码
- 关联创建的远程
git
仓库, 并将本地代码推到远程仓库
git remote add origin https://gitee.com/lingtian.com/bwgem.git
git add .
git commit -m '初始化'
git push --set-upstream origin master
复制代码
git tag 1.0.0
git push --tags
复制代码
2、注册RubyGems
账号
3、本地安装开发的Ruby
工具
gem build bwgem.gemspec
复制代码
Successfully built RubyGem
Name: bwgem
Version: 1.0.0
File: bwgem-1.0.0.gem
复制代码
gem install ./bwgem-1.0.0.gem
复制代码
- 可以查看本地安装的Ruby工具:
bwgem-1.0.0
gem uninstall bwgem
复制代码
4、将工具上传至RubyGems
- 执行命令, 过程需要输入在
RubyGems
注册时的密码
curl -u bwgem https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
复制代码
chmod 0600 ~/.gem/credentials
复制代码
- 执行命令, 将生成的
bwgem-1.0.0.gem
文件推送到RubyGems
gem push bwgem-1.0.0.gem
复制代码
- 当
bwgem-1.0.0.gem
被推送到RubyGems
之后, 打开 RubyGems, 登录账号可以看到下图
- 此时, 就可以让别人使用自己开发的
Ruby
库了
- 使用gem安装
gem install bwgem
复制代码
5、执行开发的Ruby工具
gem install bwgem
复制代码
bwtest /Users/mac/Desktop/say.txt 'Hello World!'
复制代码
这是一个简单的 Ruby 库
复制代码
- 同时桌面生成
say.txt
文件, 内容是Hello World!
三、升级自己开发的Ruby库
- 根据自己的需要, 修改代码
- 我这里修改了
bin
文件夹中bwtest
文件的实现
#!/usr/bin/env ruby
require 'bwgem'
require 'pathname'
puts "#{ARGV[0]} 中写入 #{ARGV[1]}"
Bwgem::Writer.new(ARGV[0], ARGV[1])
复制代码
git add .
git commit -m '3.0.0'
git push origin master
git tag 3.0.0
git push --tags
复制代码
- 接着通过
bwgem.gemset
生成bwgem-3.0.0.gem
gem build bwgem.gemspec
复制代码
Successfully built RubyGem
Name: bwgem
Version: 3.0.0
File: bwgem-3.0.0.gem
复制代码
- 然后将
bwgem-3.0.0.gem
推送到 RubyGems
gen push bwgem-3.0.0.gem
复制代码