`
cnetwei
  • 浏览: 178071 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

    博客分类:
  • Ruby
 
阅读更多

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命令详解官方文档

 

。。

 

分享到:
评论

相关推荐

    ruby-2.2.4.tar.gz、rubygems-2.6.2.zip、redis-3.2.2.gem

    在给定的资源中,我们涉及到了三个主要的IT组件:Ruby编程语言、RubyGems包管理器以及Redis键值存储系统。以下是关于这些技术的详细知识点: 1. **Ruby 2.2.4**: Ruby是一种面向对象的、动态类型的编程语言,以其...

    rubygems ruby 包管理

    RubyGems是Ruby编程语言的一个核心组成部分,它提供了一个方便的包管理和分发系统,使得开发者可以轻松地安装、发布和管理Ruby库和程序。在Ruby社区,RubyGems是共享代码和模块化开发的标准方式。本文将深入探讨...

    2.4-3.0.rubygems.rar

    在IT行业中,Ruby Gems是Ruby编程语言的一个关键组成部分,它是一个包管理器,用于管理和分发Ruby库和软件包。标题“2.4-3.0.rubygems.rar”暗示了这个压缩包可能包含了Ruby Gems从版本2.4到3.0之间的升级或集合,这...

    rubygems-2.0.14.1-39.el7_9.noarch.rpm

    Centos7 el7.x86_64 官方离线安装包,安装指令为 sudo rpm -ivh rubygems-2.0.14.1-39.el7_9.noarch.rpm

    linux系统下搭建redis集群需要的软件包

    该资源包中是在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等软件包。

    ruby-1.8.7.tar.gz

    在搭建 Redmine 时,你可能还需要安装其他依赖,如数据库驱动(如 MySQL 或 PostgreSQL)、RubyGems(用于管理和安装 Ruby 的扩展库)以及 Redmine 本身。确保所有依赖项都已满足,并按照 Redmine 的官方文档进行...

    ruby-2.6.1.tar.gz

    在Redis集群的上下文中,可能需要某些特定的Gem,如`redis-cluster`,它是一个Ruby库,提供了与Redis集群交互的接口,可以帮助用户更轻松地管理节点、分配槽和执行集群操作。 在设置Redis集群时,首先确保你有一个...

    Redmine 搭建 Ruby_Ruby_on_Rails 项目管理系统

    - **RubyGems**:版本为 1.6.2 或 1.3.7,用于 Ruby 包管理。 - **Rake**:版本为 0.8.7,用于自动化任务执行。 - **Rails**:版本为 2.3.11 或 2.3.5,根据所选的 Redmine 版本匹配相应的 Rails 版本。 - **...

    redis集群所需包,内含redis-3.2.1.gem,rubygems-2.4.2,ruby-2.3.0.tar,zlib-1.2.11.tar

    RubyGems是Ruby语言的包管理系统,用于管理和安装Ruby库,如上面提到的`redis-3.2.1.gem`。安装`rubygems-2.4.2`是为了确保在系统上可以正确地安装和更新Redis的gem,从而顺利进行集群的搭建和管理。 4. **ruby-...

    演示基本动画过渡和触摸手势的Ember.js移动应用程序_CSS_Ruby_下载.zip

    `ember-cli`依赖于Ruby,因为它使用了`bundler`和`rubygems`等Ruby库来管理依赖和构建流程。你可以通过`ember new`命令创建新项目,`ember generate`生成组件、路由等,以及`ember serve`来启动本地开发服务器。 在...

    rubygems-3.2.27.zip

    RubyGems是Ruby编程语言的一个核心组成部分,它提供了一个管理和分发Ruby库和程序的框架。这个名为"rubygems-3.2.27.zip"的压缩包包含了RubyGems的3.2.27版本,这是一个重要的更新,旨在提高稳定性和性能,同时也...

    rubygems-update-3.1.3.gem

    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 ...

    ruby _1.9.3 _gem环境

    Ruby 是一种面向对象的、动态类型的编程语言,而Gem是Ruby的包管理系统,它允许开发者轻松地分发、安装和管理软件库。Ruby 1.9.3是Ruby的一个重要版本,它引入了许多改进和新特性,包括性能优化和语法增强。在Ruby ...

    [其他类别]软件发布专用程序_softfabu.zip

    5. **包管理器**:npm、PyPI、RubyGems等包管理器用于管理和分发依赖库,确保软件所需的所有组件都能正确安装。 6. **发布策略**:包括灰度发布、蓝绿部署、金丝雀发布等策略,帮助开发者逐步推出新版本,减少对...

    InstantRails-2_rubygems1.8.chm

    InstantRails-2_rubygems1.8.chm InstantRails-2_rubygems1.8.chm

    linux下的redmine搭建.pdf

    RubyGems 是 Ruby 的包管理器,用于安装和管理 Ruby 的依赖项。下载 RubyGems 的源码包,解压和安装。 1. 下载 RubyGems 源码包:wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.5.tgz 2. 解压 ...

    安装rvm,把ruby版本提升至3.0.0

    在IT行业中,管理和切换Ruby版本是一项常见的任务,特别是在开发环境中,不同的项目可能依赖于不同版本的Ruby。`RVM`(Ruby Version Manager)是解决这一问题的利器,它允许开发者在多个Ruby版本之间轻松切换。本文...

    ruby+ruvygems+redis.gem.rar

    标题 "ruby+ruvygems+redis.gem.rar" 涉及到的是一份压缩包,其中包含了构建和操作Redis集群环境所需的Ruby编程语言、RubyGems包管理和Redis数据库的相关组件。以下是关于这三个核心概念的详细说明: 1. **Ruby**:...

    ruby-fcgi-0.8.7.tar.gz_fcgi

    Ruby FCGI(Fast Common Gateway Interface)是Ruby编程语言与FastCGI协议交互的一个库,主要用在Web服务器上运行Ruby写的动态Web应用程序。标题中的"ruby-fcgi-0.8.7.tar.gz_fcgi"表明这是一个版本为0.8.7的Ruby ...

Global site tag (gtag.js) - Google Analytics