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/root
update_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
http://www.86afei.com/?p=396 写道
解决方案有几种,一种是自己一个一个下载gem包,本地安装,不过太麻烦。
另一种是修改源地址:
先查看一下当前源地址
gem env
gem sources list
一般默认是:http://rubygems.org/
增加几个源路径:
sudo gem sources -a http://gems.rubyforge.org
sudo gem sources -a http://gems.github.com
问题应该解决了。关于gem sources的用法可以看帮助:gem help sources
http://www.xiaoyangsheng.com/2011/03/ubuntu%E4%B8%8A%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%AE%89%E8%A3%85ruby-on-rails-3/ 写道
现在gem服务器都指向http://production.s3.rubygems.org/,而这个地址似乎已被墙,导致无法安装任何gem。一个临时的解决办法是,改用http: //production.cf.rubygems.org/ 作为源,具体方法为编辑~/.gemrc,添加如下内容:
---
:update_sources: true
:sources:
- http://production.cf.rubygems.org/
:benchmark: false
:bulk_threshold: 1000
:backtrace: false
:verbose: true
gem: --no-ri --no-rdoc
RubyGems的常用命令:
gem list [GEM-Name],列出名称以String开始的gem包,加 -r 参数是列出远程的;
gem install [GEM-Name],安装、gem uninstall [GEM-Name],卸载;
gem search [GEM-Name],搜索;
译言网上有关于RubyGems的官方文档中文版,可以参考:
1、RubyGems简介:http://article.yeeyan.org/view/130962/95492
2、安装RubyGems:http://article.yeeyan.org/view/130962/95514
3、使用RubyGems:http://article.yeeyan.org/view/130962/95500
4、RubyGems编程:http://article.yeeyan.org/view/130962/140067
更多RubyGems模块之gem命令,请参考:
官方文档:
http://guides.rubygems.org/
http://docs.rubygems.org/
在代码中,require 'rubygems' 语句之后,再require some-gem模块,Ruby就能够找到它们(包括你指定的模块及其依赖的模块)所在位置,并把路径加入:$。
也可以使用增强的require_gem 语句,该语句可以指定具体的版本需求,例如:
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命令详解
及 官方文档
。
。。
分享到:
相关推荐
所有资源 下载路径,包含6个redis-config配置文件和 ruby-2.2.4.tar.gz、rubygems-2.6.2.zip、redis-3.2.2.gem 几个资源
rubygems ruby 包管理,最新的
该资源包中是在linux(我的系统为redhat6.5)系统下搭建部署redis集群所需要的软件包,包括zlib-1.2.8.tar.gz、ruby-2.3.1.tar.gz、rubygems-2.4.2.tgz、redis-3.2.1.gem、redis-3.2.1.tar.gz等软件包。
We call these packages 'gems' and RubyGems is a tool to install, create, manage and load these packages in your Ruby environment. RubyGems is also a client for RubyGems.org, a public repository of ...
InstantRails-2_rubygems1.8.chm InstantRails-2_rubygems1.8.chm
搭建redis集群所需包内含redis集群所需包。redis-3.2.1.gem,rubygems-2.4.2,ruby-2.3.0.tar,zlib-1.2.11.tar
gem包管理
Ruby 这个就不用多说了 ...RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本已经包
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...
包含redis-3.2.11.tar.gz、ruby-2.3.8.tar.gz、rubygems-3.0.4.tgz、redis-3.2.1.gem离线安装包,亲测有效 redis安装步骤:https://blog.csdn.net/hitits/article/details/94588433 ruby安装步骤:...
ruby-2.2.5.tar.gz +rubygems-3.1.2.tgz+redis-4.0.2.gem 搭建Redis集群环境的Ruby必须文件,亲测可用
rubygems-bundler, 没有 `bundle exec... ` > = 2.2.0通常,在 RubyGems> = 2.2.0上不需要这个 gem 。 只需将 RUBYGEMS_GEMDEPS 环境变量设置为你的Gemfile或者 -的路径,以便在父目录中自动发现。但是,还不
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第三部分;第一部分下载...
离线安装包,亲测可用
yum -y install ruby rubygems ruby-devel 添加阿里云的Rubygems 仓库 gem sources -a http://mirrors.aliyun.com/rubygems/ #移除原生Ruby仓库 gem sources --remove http://rubygems.org/ 指定安装版本 gem ...
ruby 1.8.5 .tgz 老版本ruby linux
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
RubyGems(简称 gems)是一个用于对 Ruby组件进行打包的 Ruby 打包系统。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第一部分;第二部分下载...
如何安装 Ruby 和 RubyGems做一些简单介绍