首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Ruby之旅_3.RubyGems & bundle 与保管理

2012-10-25 
Ruby之旅_3.RubyGems & bundle 与包管理Ruby之旅_3.RubyGems & Bundle 与包管理?“包”,可以被理解为Java语

Ruby之旅_3.RubyGems & bundle 与包管理

Ruby之旅_3.RubyGems & Bundle 与包管理

?

“包”,可以被理解为Java语言中的第三方类库,但在Ruby中,包的含义似乎要稍微宽广一些——除了有第三方类库的功能外,一个第三方的包还有可能会提供相对应的命令,例如:RubyGem包就提供了gem命令。

把Ruby(包括语言实现即标准类库)作为一个平台,很多第三方开发者会提供,针对某特定功能的扩展类库(如:ActiveRecord),或扩展功能包(如:RubyGems)

?

The RubyGems

RubyGems是一个库和程序的标准化打包及安装框架,它使得定位、安装、升级、卸载变的更容易,从功能上而言,它类似于Java平台上的Maven。

?

在CRuby发行版本中,默认是不安装RubyGems模块的,按以下步骤进行安装:

1、在http://rubygems.org/下载最新版本;

2、展开下载到的安装包文件;

3、进入目标目录执行:ruby setup.rb;

更多信息,请参考:http://rubygems.org/

?

(补充:事实上 Ruby1.9版本开始 就已经将RubyGem作为默认配置打包到发行版中了,不需要再自己安装)

?

JRuby下升级RubyGems

JRuby默认就安装了RubyGems包,但版本较老(使用gem -v 命令可以参看当前版本),

可以使用以下命令来进行升级:

gem update --system          # may need to be administrator or root

如果出错,请使用以下命令:

gem install rubygems-update  # again, might need to be admin/rootupdate_rubygems              # ... here too

在WinXP下,JRuby当前版本(v1.6.4)工作在1.9模式下时,(按以上方法)升级gem会出现错误——似乎是`File.expand_path "~" `执行时存在错误,在jruby\lib\ruby\site_ruby\1.8\rubygems.rb 文件的 self.find_home 方法里,修改后即可。

然而升级到gem的最新版本(v1.8.10)后,在jruby\lib\ruby\site_ruby\1.8\rubygems\package\tar_input.rb文件中,initialize方法里,调用`gzis=Zlib::GzipReader.new(*args)`时,参数个数错误,需要注释掉 附加 encoding的代码。

?

最近gem的默认源被墙了,FUCK GFW,但是别担心,我们有:http://ruby.taobao.org

?

require 'rubygems'require 'my-gemname'#或者使用增强语法require_gem 'my-gemname', '>=0.04' #指定(本地安装的)版本必须高于0.04版

另外,你还可以使用 -rubygems 命令行选项,避免在代码中出现 " require 'rubygems' ",结合RUBYOPT环境变量,则效果更佳。

?

Gems管理

相信你会安装很多的gem包在你的系统中,例如bundler 和 rails,它们将安装在某个默认位置上,你可以通过配置gem来指定该路径,或者配置GEM_HOME环境变量。

不管怎么说,当你使用gem env 命令时,你将看到:

INSTALLATION DIRECTORY, GEM PATHS,等等变量,还有别忘了把GEM_HOME\bin目录加入到PATH环境变量中,有些gem包自己带的命令将放在哪儿。

?

?

The Bundler

在Rubygems的基础上,Bundler负责应用对(第三方)模块的依赖。

Bundle成功安装后,就会有命令行工具bundle可以使用,该命令只能在一个含有Gemfile的目录下执行(如rails 3项目的根目录)。
Gemfile文件中配置了当前项目对外部(第三方)模块的依赖信息,而姐妹文件Gemfile.lock则记录了 依赖模块(gem)所在位置——如某个网络服务器(http://rubygems.org/),或本地路径。

关于bundle命令的使用说明可以参考:Ruby bundle命令详解 及 官方文档。

?

。。

?

热点排行