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命令详解
及 官方文档
。
。。
分享到:
相关推荐
对于初学者来说,理解每一步的作用以及Rails的工作原理是非常有益的,这将为你的Ruby on Rails开发之旅打下坚实基础。记得持续关注Ruby和Rails的更新,以便保持你的开发环境始终处于最佳状态。在实际开发过程中,...
特色之旅 您可以使用年份和月份编号创建一个新的 Month 对象: Month . new ( 2014 , 1 ) # January 2014 或者,您可以使用 Month 方法将各种日期/时间对象转换为 Month 对象: Month ( Date . new ( 2014 , 1 ...
在开始Rails的学习之旅之前,首先需要搭建一个合适的工作环境。以下为环境搭建的具体步骤: 1. **Ruby 版本**: - 官方推荐使用 Ruby 1.9.2 或更高版本,因为之前的版本如 1.8.7 p248 和 p249 存在可能导致 Rails ...
**Jekyll博客搭建指南** Jekyll是一款静态站点生成器,特别适合用来构建个人博客系统。...在这个教程中,我们将一步步地了解如何创建并配置一个基于Jekyll的博客。...现在,你已经准备好开始你的Jekyll博客之旅了!
448考试信息报名系统,系统包含三种角色:管理员、用户,教师,系统分为前台和后台两大模块,主要功能如下。 【前台功能】 1. 首页:提供用户进入系统的入口。 2. 考试信息:用户可以查看当前和将来的考试信息。 3. 新闻资讯:发布与考试相关的新闻、通知和资讯。 4. 后台管理:提供管理员、教师、学生进入后台管理的入口。 5. 个人中心:用户可以管理个人信息。 【后台功能】 1. 系统首页:提供管理员、教师、学生进入后台管理的入口。 2. 个人中心:管理员、教师、学生均可以管理个人信息 3. 管理员管理:添加、编辑、删除系统管理员账号。 4. 学生管理:添加、编辑、删除学生账号。 5. 教师管理:添加、编辑、删除教师账号。 6. 考试报名管理:教师和学生均可以进行考试报名。 7. 考试信息管理:管理员和教师可以添加、编辑、删除考试信息。 8. 准考证管理:管理员和教师可以生成、查看、管理准考证信息。 9. 考试成绩管理:教师可以录入、修改学生的考试成绩。 10. 系统管理:管理员可以进行系统的基本设置。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
IslandPlannerWindows.zip
YAMAHA RCX240_使用说明
# 基于Raspberry Pi的FM发射器项目 ## 项目简介 本项目是一个基于Raspberry Pi的FM发射器,可以将音频信号转换为FM信号并通过无线电波发送出去。该项目适用于各种Raspberry Pi开发板,使用一般的时钟输出产生调频广播通信。 ## 项目的主要特性和功能 1. FM发射器功能使用Raspberry Pi作为FM发射器,将音频转换为FM信号并广播。 2. 频率选择支持多种频率选择,用户可以根据需要设置广播频率。 3. 音频输入提供灵活的音频输入选项,包括WAV文件、实时麦克风输入等。 4. DMA支持支持DMA(直接内存访问)和CPU传输方式,提高数据传输效率。 5. 异常处理包含异常处理和中断处理机制,保证程序的稳定性和健壮性。 6. 命令行配置提供简洁的命令行参数配置,方便用户操作。 ## 安装使用步骤 1. 复制项目 bash cd fmtransmitter 2. 构建项目
内容概要:本文介绍了一个小型Kotlin实战项目,旨在展示Kotlin在构建跨平台HTTP客户端方面的优势,特别关注了缓存机制的实现。文章从选择适合的主题出发,详细介绍了项目的结构设计,涵盖HTTP请求执行、缓存策略(如永久缓存和时间缓存),并探讨了如何利用协程处理异步任务。此外,还涉及了跨平台适配的技术实现。为了确保内容的质量和技术深度,作者提供了多个详细的代码片段,并进行了性能对比实验。通过对一个带缓存机制的HTTP客户端的实际操作,证明了Kotlin在这方面的优越性。 适合人群:具备一定编程经验和对Kotlin有一定了解的研发人员或学生,尤其是希望深入了解Kotlin特性和提高代码质量的Android和全栈开发者。 使用场景及目标:本文主要面向想了解Kotlin如何解决网络请求和数据缓存挑战的人群。通过具体案例分析和实际代码,展示了Kotlin的高效特性和强大的多平台开发能力,从而达到让读者能够快速上手并应用于实际项目的目标。 其他说明:本文不仅限于理论介绍,更重要的是通过真实项目来引导读者理解每一处设计决策背后的原因,比如为何选用某些特定技术栈或库,在实践中体会Kotlin所带
# 基于Android的“喵的响亮”音乐播放器 ## 项目简介 “喵的响亮”音乐播放器是一款基于Android平台的音乐播放应用,专为大四毕业设计而开发。该应用提供了丰富的音乐播放功能,包括播放、暂停、下一首上一首切换、音乐信息展示等。此外,应用还集成了用户登录、注册、音乐上传、审核、点赞、收藏等功能,为用户提供了一个完整的音乐管理体验。 ## 项目的主要特性和功能 ### 核心功能 1. 音乐播放支持音乐的播放、暂停、下一首上一首切换,并提供播放进度控制。 2. 用户管理用户可以注册、登录、修改密码、设置密保问题等。 3. 音乐管理用户可以上传音乐、审核音乐、点赞、收藏音乐。 4. 界面交互提供直观的用户界面,支持点击、滑动等交互操作。 5. 数据存储使用本地数据库和SharedPreferences存储用户信息和音乐数据。 ### 技术特性 1. 依赖注入使用Dagger框架进行依赖注入,提高代码的可维护性和可测试性。
台达温度控制器教材PDF档
IMG_20250322_124630.jpg
数据分析案例-健身房会员锻炼数据集可视化分析(数据集+代码).rar
什么是HTML文件? HTML的英文全称是Hypertext Marked Language,中文叫做“超文本标记语言"。和一般文本的不同的是,一个HTML文件不仅包含文本内容,还包含一些Tag,中文称“标记"。 一个HTML文件的后缀名是.htm 或者是.html.用文本编辑器就可以编写HTML文件。
QtQPainter使用方法程序示例
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
基于深度学习的车牌识别源码(高分毕设项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学习的车牌识别源码(高分毕设项目)基于深度学
G6
javascript项目完整代码-扑克牌计分器微信小程序