- 浏览: 1309205 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
RubyGems详解_深入理解(二)
一。基本知识
官方网站:
http://www.rubygems.org/
这里是rubygems的信息大全,提供安装,升级,发布gem的方法
下载安装:
http://rubygems.org/pages/download
Gem的Specification Reference:
http://guides.rubygems.org/specification-reference/
rubygems的常用命令:
gem update --system #Update to the latest RubyGems version
gem update --system 1.3.7 #update RubyGems to version 1.3.7
gem build foo.gemspec #Build your gem
gem push foo-1.0.0.gem #Deploy your gem instantly
gem的命令和解释大全:
http://guides.rubygems.org/command-reference/
二 rubygems深入理解
rubygems对ruby做了什么
RubyGems modifies your Ruby load path, which controls how your Ruby code is found by the require statement. When you require a gem, really you’re just placing that gem’s lib directory onto your $LOAD_PATH.
简单来说,就是把gem包路径加入了ruby的加载路径中,这样的好处:
1) 存放位置: 这些gem包和文件不必放入ruby包的路径中,保持了分离性;
2)多半本共存: 可以根据指定版本号,使用同一个gem包的不同版本,这样不同版本的gem可以共存;
3)版本依赖: gem包会依赖别的gem,rubygems解决了依赖问题;
需要仔细看前面的文章:http://fantaxy025025.iteye.com/blog/1261435
rubygems为了做到上面的功能,做了很多的处理:
1)把gem放在了单独的一个位置,可以用命令来查看
#--对应rvm的
lijg@lijg-pc ~/.rvm/gems/ruby-1.8.7-p352@rails-2.3.5/gems $ gem environment gempath
/home/lijg/.rvm/gems/ruby-1.8.7-p352@rails-2.3.5:/home/lijg/.rvm/gems/ruby-1.8.7-p352@global
#--对于非rvm的,在目录:
/opt/ruby/lib/ruby/gems/1.8/gems
2)存的时候,用gem名字和版本号来区分,所以相同的版本号,会被覆盖掉
lijg@lijg-pc /opt/ruby/lib/ruby/gems/1.8/gems $ ll | grep rack
drwxr-xr-x 7 root root 4096 2012-04-17 12:00 rack-1.0.1/
drwxr-xr-x 7 root root 4096 2011-05-05 15:28 rack-1.2.2/
drwxr-xr-x 7 root root 4096 2012-04-16 18:35 rack-1.4.1/
drwxr-xr-x 3 root root 4096 2011-05-05 15:31 rack-mount-0.6.14/
drwxr-xr-x 4 root root 4096 2012-02-15 10:31 rack-protection-1.2.0/
drwxr-xr-x 4 root root 4096 2011-05-05 15:31 rack-test-0.5.7/
3)版本依赖会在gem的specification中写上,这样rubygems会去处理
使用参考http://guides.rubygems.org/specification-reference/#add_development_dependency
使用语句:
spec.add_development_dependency 'example', '~> 1.1', '>= 1.1.4'
例如rack1.0.1中的语句:
28 if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29 s.add_development_dependency(%q<test-spec>, [">= 0"])
30 s.add_development_dependency(%q<camping>, [">= 0"])
31 s.add_development_dependency(%q<fcgi>, [">= 0"])
32 s.add_development_dependency(%q<memcache-client>, [">= 0"])
33 s.add_development_dependency(%q<mongrel>, [">= 0"])
34 s.add_development_dependency(%q<ruby-openid>, ["~> 2.0.0"])
35 s.add_development_dependency(%q<thin>, [">= 0"])
36 else
37 s.add_dependency(%q<test-spec>, [">= 0"])
38 s.add_dependency(%q<camping>, [">= 0"])
39 s.add_dependency(%q<fcgi>, [">= 0"])
40 s.add_dependency(%q<memcache-client>, [">= 0"])
41 s.add_dependency(%q<mongrel>, [">= 0"])
42 s.add_dependency(%q<ruby-openid>, ["~> 2.0.0"])
43 s.add_dependency(%q<thin>, [">= 0"])
44 end
4)坏处和问题:不同的rubygems会有不同的处理方法(或者严格来说使用规范变了)
例如rubygems不同版本会去不同的路径下存gem和找gem。
这样导致用某个版本比如1.3.7升级到1.8.6后原来安装的gem不能用了等等。
解决方法:可以用bundle,重新执行就是了
好的文章参考:
#爱电的林总结的一篇,真全
http://eshilin.blog.163.com/blog/static/132880330201062642954212/
#淘宝的qa团队http://qa.taobao.com/ 在2009年的总结,总结的比较一般,不过淘宝的实力技术u还是不错
Ruby Gems(1-2-3-4)–简要介绍
http://qa.taobao.com/?p=709
http://8888.pumo.com.tw/gate/gb/qa.taobao.com/?p=719
http://8888.pumo.com.tw/gate/gb/qa.taobao.com/?p=982
http://8888.pumo.com.tw/gate/gb/qa.taobao.com/?p=992
附录:
这个一定要看:深入理解ruby安装,require,load,gem,等等
http://www.skorks.com/ #这个人不错阿,技术人的性格,deep into ruby!
http://www.skorks.com/2009/08/digging-into-a-ruby-installation-require-vs-load/
http://rubylearning.com/satishtalim/including_other_files_in_ruby.html#一个require和load的解释
====完毕====
+
+
+
+
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 650= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1164Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2855碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1278这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2634DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 1007From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 652The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 955在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1588prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 1961Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1086Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1155from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1189一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 1086The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 634在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1429问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 1965错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2189rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 898这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1082#link_to not working in sc ...
相关推荐
在本文中,我们将深入探讨will_paginate的安装、使用方法以及其核心概念,帮助开发者更好地理解和应用这个插件。 一、will_paginate的安装 在传统的安装方式中,开发者通常会通过RubyGems和Bundler来安装will_...
2. **语言特性详解**:深入解析新语法,如新的字符串处理、块和 Proc 对象的使用。 3. **编码处理**:详细讲解编码概念,如何处理不同编码的字符串,避免编码错误。 4. **库和框架**:介绍 Ruby 1.9.1 集成的标准...
linecache19是linecache库的一个更新版本,针对Ruby 1.9系列进行了优化,尽管在rubygems上尚未正式发布最新版本0.5.13-master,但它的特性与应用仍然值得我们深入探讨。 linecache19的核心功能在于,它能够快速地...
通过以上内容的学习,读者不仅能够掌握Ruby语言的基础知识,还能够深入理解其背后的原理与机制,并具备开发复杂项目的实际能力。这本教材全面覆盖了从基础知识到高级主题的内容,适合不同水平的开发者学习和参考。
#### 四、深入理解Rails框架 - **控制器**: 控制业务逻辑和流程,处理用户请求并返回响应。 - **模型**: 代表数据层,处理数据访问和业务逻辑。 - **视图**: 展示层,负责呈现数据给用户。 - **路由**: 定义URL与...
#### 三、深入理解Ruby环境的安装过程 ##### 1. RVM的作用 - RVM (Ruby Version Manager) 是一个免费的开源软件,用于简化Ruby的安装和版本管理过程。 - 通过RVM可以方便地安装、管理和切换不同的Ruby版本。 ###...
本文将深入探讨Nexus 3.22.1-02-win64版本的功能特性和使用方法,帮助读者更好地理解和应用这一强大的工具。 一、Nexus概述 Nexus分为三个主要部分:Repository Manager(仓库管理器)、Group Manager(组管理器)...
《Ruby编程语言详解》 Ruby,一种面向对象的、动态类型的编程语言,以其简洁优雅的语法和强大的元编程能力著称。本资料“ruby_book”深入浅出地介绍了Ruby的核心概念和实践应用,旨在帮助初学者快速入门并精通Ruby...
《Ruby on Rails与MySQL环境配置详解》 在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的...通过这样的实践,你将对Rails和MySQL的结合有更深入的理解,为今后的Web开发打下坚实的基础。
**Jekyll 实战详解** Jekyll 是一个静态站点生成器,它使用Markdown、文本模板语言(如Liquid)和你的内容来创建一个静态网站。这个名为“jekyll_Practical”的项目,很显然,是为了帮助用户实践并掌握Jekyll的使用...
此外,FPM可以与现有的包管理系统无缝集成,而不需要开发者深入理解各种包格式的内部结构。 **4. FPM的社区支持和扩展** 作为开源项目,FPM拥有活跃的开发者社区,不断提供更新和改进。社区成员贡献了各种插件和...
【Dashing 库仪表板详解】 Dashing 是一个强大的开源框架,它基于 Ruby 的轻量级 web 框架 Sinatra,专为创建美观且实用的...通过深入理解 Dashing 的工作原理和最佳实践,您可以打造出满足特定需求的高质量仪表板。
**Jekyll 网站构建详解** Jekyll 是一个静态站点生成器,它将文本格式的内容转换成静态的 HTML 和 CSS 文件,适用于个人博客、项目文档等网站的创建。这个名为 "jekyllSite" 的项目是为了搭建基于 Jekyll 的网站,...
《Jekyll-jeffreytse 博客搭建与使用详解》 Jekyll-jeffreytse 博客是一个基于 Jekyll 框架构建的个人博客模板,由 JeffreyTse 创建,它提供了一个优雅且功能丰富的环境,用于展示个人作品、分享想法和技术知识。在...
**atr.io 网站详解** atr.io 是一个基于 Jekyll 框架构建的咨询网站,它专注于提供专业的IT咨询服务和技术解决方案。...如果需要深入开发或维护 atr.io 网站,理解这些文件和目录的结构至关重要。
【标题】:“Sass Compass:...通过这个课程测试,开发者不仅能够深入理解 Sass Compass 的功能,还能熟悉 Git 版本控制,为实际项目开发打下坚实基础。记得定期拉取远程仓库的更新,并保持良好的代码管理和协作习惯。
《干容器:Ruby实现的简单可配置对象容器详解》 在Ruby编程领域,"dry-container"是一个备受关注的库,它提供了一种简洁且可...通过深入理解和实践,我们可以更好地利用这一工具来优化我们的代码设计,提升开发效率。
”应用详解》 Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web开发框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提升开发效率和代码的可读性。在本文中,我们将深入探讨如何使用Rails创建一个基础的...