一不小心就跟
Godfat 寫的議題衝突,不過沒關係,我是走輕鬆簡單取向的。這次要講的就是如何將自己寫的程式包成 Ruby GEM,本文的參考自 JavaEye 上面的
创建自己的ruby Gems,程式也是來自
計算民國跟學年度的 Plugin的範例。
結構
要建立一個 GEM Package,首先要先搞清楚結構。因為我們是走極簡路線的,所以現在一開始連 unit-test 都不要 test。將你的 GEM Package 設定為下面的結構。
-----gem.spec
|
--README
|
--lib/
裡面 lib 就是放所有程式的所在。
結構檔
根目錄下面有 gem.spec,跟 README 兩個檔案。其中 gem.spec 是描述 GEM Package 的結構檔,也是最重要的檔案,裡面記載了這個 GEM Package 絕大多數的資訊。可以說學會了寫這個檔案,就學會了打包 GEM Package。這裡要講的是其實 gem.spec 檔名是我隨便取的,檔名不限定,而且他的格式可以使用 ruby 或是 YAML 語法的,這裡先使用 Ruby 語法。
require 'rubygems'
SPEC=Gem::Specification.new do |s|
s.name="Taiwan_Year"
s.version='0.01'
s.author='thegiive'
s.email="thegiive at gmail dot com"
s.homepage="http://lightyror.thegiive.net/"
s.platform=Gem::Platform::RUBY
s.summary="為台灣學年度跟民國所寫的Plugin"
condidates =Dir.glob("{bin,lib,docs,test}/**/*")
s.files=condidates.delete_if do |item|
item.include?("CVS")|| item.include?("rdoc")
end
s.require_path="lib"
s.has_rdoc=false
s.extra_rdoc_files=["README"]
end
裡面
- s.name 就是這個 gem 的名稱,也是他打包出來的檔名,也就是說這個 gem package 會叫做 Taiwan_Year-0.01.gem。
- s.version 部分 godfat 有解釋過,盡量從 0.0.1 而不是從 0.0.0 開始寫起。
- s.summary 就是當你打入 gem list 出現的簡單文字,安裝了本 gem ,按下 gem list 這裡會出現
sources (0.0.1)
This package provides download sources for remote gem installation
Taiwan_Year (0.01)
為台灣的學年度跟民國寫的 Plugin
vim-ruby (2006.07.11)
Ruby configuration files for Vim. Run 'vim-ruby-install.rb' to
complete installation.
這樣的情況。
再來就是 README ,就是打入一些information進去摟。
放入程式
最後把程式放入到 lib 底下,這裡是使用
計算民國跟學年度的 Plugin的範例,把他放入 lib/year.rb 檔案裡面
class Time
def roc_year
self.year - 1911
end
def student_year
if self.month < 7
self.roc_year - 1
else
self.roc_year
end
end
end
打包 gem
當程式都放好後,開始打包 gem 了。我們這裡使用 gem build 指令來打包
gem build gem.spec
這裡面的 gem.spec 就是你剛剛寫的結構檔的檔名。成功了之後,你就會發現我們已經產生了一個 Taiwan_Year-0.01.gem。
安裝 gem
要安裝這個剛打包好的 gem 就是直接打
gem i TaiwanYear-0.01.gem
即可。
使用 gem
要使用剛剛安裝好的 gem package ,首先要 require 'rubygems' ,告訴程式這個是使用 gem 的程式。
其次要搞清楚程式檔名,像我雖然 GEM Package 叫做 TaiwanYear ,但是我的程式其實是放在 lib/year.rb 底下的,所以使用上還是得必須 require 'year' 。
解決方式很簡單,當我們放入程式到 lib 裡面的時候,請將程式名稱取的跟 GEM Package 名字相同即可。像是當初在打包時,我們就將程式放在 lib/TaiwanYear.rb 底下,以後使用上就可以這樣使用。
require 'rubygems'
require 'TaiwanYear'
puts Time.now.roc_year
如此,我們已經學會如何打包 gem 了。
分享到:
相关推荐
此外,gem还支持创建自己的gem包,使用 `gem build package.gemspec` 命令可以构建gem包。对于大型项目,推荐使用bundler来管理多个版本的gem,确保项目依赖的一致性。 总的来说,gem为Ruby开发者提供了强大的包...
除了`bundle exec`,bundler还提供了一系列其他有用的命令,如`bundle update`用于更新所有或特定的gem,`bundle install --path vendor/bundle`可将gem安装到指定的本地路径,以及`bundle package`用于缓存gem,...
"data-viz:动态生成和可视化交互式数据模型方案的简单 gem" 提供了一个基于 JavaScript 的解决方案,旨在简化数据可视化的开发流程。 这个 gem 可能是一个开源库,它封装了用于创建动态数据模型的工具和方法。在...
furious package -建立一个宝石包裹 furious tag -在Git存储库中标记版本 furious push -将gem推送到Gemfury(要求package已成功运行,需要将GEMFURY_TOKEN环境变量设置为您的令牌,并需要将GEMFURY_ACCOUNT环境变量...
它原本是为通用而设计的,但随后,它的字体使它看起来像是一个用于code package的网站。 信息: 欢迎使用您的新Jekyll主题! 在此目录中,您将找到能够将主题打包成gem所需的文件。 把你的布局_layouts ,你包括_...
`fpm`(Fast Package Manager)是一个开源项目,旨在简化跨多种平台创建软件包的过程。它的出现极大地减轻了开发者在Linux、Unix系统上构建deb、rpm以及其他类型软件包时所面临的困扰。 **1. FPM的核心功能** - **多...
受Chef启发的简单轻巧的配置管理工具。 概念 类Chef DSL(但与Chef不兼容) 比厨师更简单,更轻 只有食谱 幂等 安装 $ gem install itamae 入门 创建一个配方文件作为recipe.rb : package 'nginx' do action :...
- 编写脚本内容,这里以创建一个简单的 RPM 包为例: ```bash #!/bin/bash fpm -s dir -t rpm -n nginx-custom -v 1.8.0 -C /application/nginx-1.8.0 ``` - 运行脚本,生成 RPM 包: ```bash bash nginx_...
该项目建立在之上-简单,可博客的静态网站生成器。 Jekyll也恰好是GitHub Pages的引擎,这意味着您可以使用Jekyll从GitHub的服务器上免费托管您的网站。 。 模板由团队带来。 先决条件 :clipboard: Ruby和GEM ...
2. **自动集成**:Torba能够自动检测并集成通过npm或yarn安装的前端资源,无需手动配置或创建额外的Bower配置文件。 3. **智能打包**:Torba分析依赖关系,只打包实际应用到项目中的前端资源,从而减少不必要的文件...
【FPM定制RPM包实践】是针对Linux系统中软件部署的一种高级技巧,它结合了编译安装和yum...通过这些参数,FPM使得创建和维护自定义RPM包变得更加简单,尤其对于中大型互联网企业的运维自动化来说,是不可或缺的技能。
目标是创建一个可以自定义和扩展的简单核心库。 BrowserStack提供的浏览器测试。 当前版本 2.1.4 演示版 演示可以在找到 CDN Toastr托管在cdnjs和jsdelivr 除错 缩小的 安装 NuGet图库 Install-Package toastr...
在macOS操作系统中,通过代码来配置环境是一种高效且灵活的方法,这可以帮助开发者或技术爱好者建立一个定制的工作环境,以满足特定的需求。本教程将详细讲解如何利用一系列工具来完成这个过程,包括`Homebrew`、`...
安装"sublime-rails-snippets"插件非常简单,你可以通过Sublime Text的Package Control来实现。首先确保你已经安装了Package Control,然后在命令面板中选择"Package Control: Install Package",搜索"sublime-rails...
这个过程无需数据库支持,只需简单的文本编辑和命令行操作,使得网站的维护变得更加简单和高效。对于TASMUN这样的项目,这种轻量级且易于部署的特性非常合适。 要开始构建TASMUN网站,你需要先确保你的系统已经安装...
- **Swift Package Manager**:苹果推出的包管理器,可用于管理Swift项目,也可以配合Python脚本使用。 - **PyObjC**:Python与Objective-C的桥梁,允许Python调用Cocoa框架,这在处理iOS特定任务时非常有用。 - *...
在Python的世界里,PyPI(Python Package Index)是官方的第三方Python软件包仓库,开发者可以在这里发布和分享自己的Python库。`django_filter-1.0.0-py2.py3-none-any.whl`是我们在PyPI官网上找到的一个特定版本的...
1. **Package Manager**:Prosit可能包含了包管理功能,允许用户安装、更新和管理项目所依赖的各种软件包或库,比如在编程中常用的npm、pip或gem等。这有助于保持项目的整洁和可维护性。 2. **Project Manager**:...
例如,创建一个简单的部署脚本,并运行: ```python # my_deploy.py from pyinfra import host from pyinfra.modules import apt, files # 更新系统包 apt.update() # 安装Nginx apt.install('nginx') # 确保...