创建自己的gem
如果在开发过程中遇到比较通用化的场景,并且估计这种情况其他开发者也可能遇到,就可以把解决方案做成ruby gem,放到rubygems.org上供所有人使用,并且将源码托管到github上使得解决方案逐步成熟。
以创建一个名为jgem的gem为例,下面就是创建gem的具体步骤:
1.首先要有rubygems.org和github的帐号。
2.利用bundler创建新的gem:
1 2 3 4 5 6 7 8 9 10 |
|
3.修改.gemspec
文件,主要修改新gem描述:
1 2 |
|
添加gem的依赖,包括开发时依赖和运行时依赖:
1 2 |
|
4. 编译gem
1 2 3 4 5 6 7 8 9 10 |
|
编译后生成jgem-0.0.1.gem。
注意:在每次gem build
编译gem前,必须git add .
或git commit
一次,因为由于gem和git的紧密关系,没有git add
到暂存区的文件变更很可能不会被编译进gem。有的朋友说在bin目录下创建的可执行文件始终无法被编译进gem就是这个原因(他们采取的办法是将.gemspec
文件的spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
改成spec.executables =['your_executable_file']
,实际这是不必要的)
5. 发布
发布生成的gem到rubygems.org。
1
|
|
根据提示输入用户信息就行了。
6. 托管代码
在github上新建一个代码库,名称最好和gem保持一致为jgem。
1 2 |
|
7. 更新gem代码
如果在本地更新代码,需要先git add .
或git commit
,然后执行gem build
才能正确编译。编译好的gem可以先在本地安装试用:
1 2 |
|
如果要上传到rubygems,则必须更新jgem/lib/jgem/version.rb
里的版本号,相同的版本号是不允许重复上传的。到rubygems上传的只是编译好的gem,不要忘了提交代码变更到github。
PS. 如果gem需要添加可执行文件如example_cmd
,在jgem目录下创建bin目录来放置这些命令即可(反复提醒,别忘了将新文件添加到git库哦)。
1 2 3 |
|