- 浏览: 2075802 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
通过Rubygems的插件,定制自己的RubyGems命令
或者,你也想了解 如何创建自己的Gem包
正文:
最近RubyGems的1.3.2的版本,发布了一个热点功能,支持自己定制的Gems命令。本文将就一个例子,说明如何使用Rubygems的插件,生成自己的Gems命令。
下面是创建Gems定制命令的主要步骤:
1. 创建 rubygems_plugin.rb
2. 注册你的命令
3. 生成命令文件
4. 定制命令描述
步骤 1: 创建 rubygems_plugin.rb
在现有的gem包源文件,或者新建的gem源文件目录下创建lib/rubygems_plugin.rb。可以参考graph的命令生成。
步骤 2: 注册你的命令
在你创建的rubygems_plugin.rb文件中,你要注册你的命令,还需要加载:
实际的rubygems_plugin.rb文件可能如下:
步骤3. 生成命令文件
为了让RubyGems自动的加载你的命令,你需要把你的命令文件放到lib/rubygems/commands/文件目录下。并且要依照Camel Case的命名方式,映射你的命令文件名。例如,对于上面的Gem::Commands::GrepCommand命令,则需要创建如下文件lib/rubygems/commands/grep_command.rb。 当然,如果,你不愿意分开文件,你也可以把你的命令代码写到rubygems_plugin.rb里。
步骤4. 定制命令描述
下面举例说明命令定制如何写,比如,我们希望生成如下命令: new, execute, arguments, defaults_str, description and usage.
new()
在这个命令对应的描述类中,我们需要定义命令的名称,提示和参数选项,具体命令可以如下:
说明一下:
* 通常情况下我们创建命令多是Gem::Command的子类。例子中继承Gem::Commands::QueryCommand是因为,这个方法本身是query类型。
* 使用super()来定义命令名称,提示信息和默认参数。但这个例子由于没有使用默认的父类所以,需要自己定制这些信息。
* add_option 和 remove_option 用来添加和删除命令参数。它们用OptionParser定义参数。
execute()
命令的功能部分通常在这里完成,但在这个例子中execute()并没有太多的逻辑,因为通过delegates在别的地方声明了。
arguments(), defaults_str(), description() and usage()
这些部分是可选的,用来描述命令的help等信息。下面是针对说明:
* arguments(): 命令参数
* defaults_str(): 用来指定默认参数.
* description: 用来指定命令的详细说明
* usage(): 描述命令的顺序.
例如:
或者,你也想了解 如何创建自己的Gem包
正文:
最近RubyGems的1.3.2的版本,发布了一个热点功能,支持自己定制的Gems命令。本文将就一个例子,说明如何使用Rubygems的插件,生成自己的Gems命令。
下面是创建Gems定制命令的主要步骤:
1. 创建 rubygems_plugin.rb
2. 注册你的命令
3. 生成命令文件
4. 定制命令描述
步骤 1: 创建 rubygems_plugin.rb
在现有的gem包源文件,或者新建的gem源文件目录下创建lib/rubygems_plugin.rb。可以参考graph的命令生成。
步骤 2: 注册你的命令
在你创建的rubygems_plugin.rb文件中,你要注册你的命令,还需要加载:
require Gem::CommandManager
实际的rubygems_plugin.rb文件可能如下:
require 'rubygems/command_manager' # dependencies specific to my command require 'rubygems/commands/query_command' require 'rubygems/super_search' require 'hirb' Gem::CommandManager.instance.register_command :grep
步骤3. 生成命令文件
为了让RubyGems自动的加载你的命令,你需要把你的命令文件放到lib/rubygems/commands/文件目录下。并且要依照Camel Case的命名方式,映射你的命令文件名。例如,对于上面的Gem::Commands::GrepCommand命令,则需要创建如下文件lib/rubygems/commands/grep_command.rb。 当然,如果,你不愿意分开文件,你也可以把你的命令代码写到rubygems_plugin.rb里。
步骤4. 定制命令描述
下面举例说明命令定制如何写,比如,我们希望生成如下命令: new, execute, arguments, defaults_str, description and usage.
new()
在这个命令对应的描述类中,我们需要定义命令的名称,提示和参数选项,具体命令可以如下:
class Gem::Commands::GrepCommand < Gem::Commands::QueryCommand def initialize super 'grep', "Enhances search command by providing extra search options and displaying results as a table" defaults.merge!(:columns=>[:name,:summary,:author]) add_option('-c', '--columns STRING', 'Gemspec columns/attributes to display per gem') do |value, options| options[:columns] = value.split(/\s*,\s*/).map {|e| self.class.valid_gemspec_columns.detect {|c| c =~ /^#{e}/ } }.compact.map {|e| e.to_sym} end add_option('-f', '--fields STRING', 'Gemspec fields/attributes to search (only for local gems)') do |value, options| options[:fields] = value.split(/\s*,\s*/).map {|e| self.class.valid_gemspec_columns.detect {|c| c =~ /^#{e}/ } }.compact end remove_option '--name-matches' remove_option '-d' remove_option '--versions' end
说明一下:
* 通常情况下我们创建命令多是Gem::Command的子类。例子中继承Gem::Commands::QueryCommand是因为,这个方法本身是query类型。
* 使用super()来定义命令名称,提示信息和默认参数。但这个例子由于没有使用默认的父类所以,需要自己定制这些信息。
* add_option 和 remove_option 用来添加和删除命令参数。它们用OptionParser定义参数。
execute()
命令的功能部分通常在这里完成,但在这个例子中execute()并没有太多的逻辑,因为通过delegates在别的地方声明了。
def execute string = get_one_optional_argument options[:name] = /#{string}/i Gem.source_index.extend Gem::SuperSearch super end
arguments(), defaults_str(), description() and usage()
这些部分是可选的,用来描述命令的help等信息。下面是针对说明:
* arguments(): 命令参数
* defaults_str(): 用来指定默认参数.
* description: 用来指定命令的详细说明
* usage(): 描述命令的顺序.
例如:
def arguments # :nodoc: "REGEXP regular expression string to search specified gemspec attributes" end def usage # :nodoc: "#{program_name} [REGEXP]" end def defaults_str # :nodoc: "--local --columns name,summary,author --fields name --no-installed" end def description # :nodoc: 'Enhances search command by providing options to search (--fields) and display (--columns) ' + 'gemspec attributes. Results are displayed in an ascii table. Gemspec attributes can be specified '+ 'by the first unique string that it starts with i.e. "su" for "summary". To specify multiple gemspec attributes, delimit ' + "them with commas. Gemspec attributes available to options are: #{self.class.valid_gemspec_columns.join(', ')}." end
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 935heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3259reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3295alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1472问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1386这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1349以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1908首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2277这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2267开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1241class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8147TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2025刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1492这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1946面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17216git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2738简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 946第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1697开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12960Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2122又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
在 Rubygem 1.3.4 版本中,开发者可以期待以下关键功能: 1. **依赖管理**:Rubygem 允许库和应用声明它们所依赖的其他 gem,这样在安装时,gem 工具会自动处理这些依赖,确保所有必要的库都已安装并更新到兼容的...
rubygem-rdoc-4.0.0-33.el7_4.noarch.rpm
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
2. 解压“rubygem-2.6.7.tgz”文件,通常使用tar命令完成,如:`tar -zxvf rubygem-2.6.7.tgz`。 3. 进入解压后的目录,例如:`cd rubygems-2.6.7`。 4. 执行安装脚本,根据操作系统可能略有不同,对于大多数Unix/...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
安装好RubyGems之后,就可以利用gem命令安装各种Ruby插件和库。这些库包括但不限于:bundler(用于管理Rubygem依赖)、rails、mysql2(Ruby的MySQL驱动)、rmagick(Ruby操作图片库)、jquery-rails(jQuery的...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
通过使用 Tag Expressions,开发者可以实现更复杂的逻辑,比如运行特定组的测试,忽略某些条件下的测试,或者根据测试的优先级进行排序。 ### 核心概念与语法 1. **标签(Tags)**:在 Cucumber 中,`@tag` 用于...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
离线安装包,亲测可用
官方离线安装包,亲测可用
install command:ruby setup.rb && bin/gem /usr/local/bin
离线安装包,亲测可用
Ruby Ferry 是一个专门为 Ruby 开发者设计的数据迁移和可视化工具,它作为一个命令行 Rubygem 提供服务。在软件开发过程中,特别是在数据库管理方面,数据迁移是必不可少的环节,它允许开发者在不同版本的数据库结构...
官方离线安装包,亲测可用
visualCaptcha-rubyGem 用于visualCaptcha后端服务的RubyGem包 用宝石安装 您需要安装Ruby 1.9.3+。 gem install visual_captcha 运行测试 您需要安装Bundler和Rake,然后才能运行 bundle install && rake 用法 ...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装