阅读更多

17顶
1踩

编程语言
Ryan Daigle发布了一系列关于rails2.1中新特性的文章.这里是这个系列中的一篇.

rails的plugin机制的杰出是有很多理由的,其中一个是使用plugin可以获得额外的功能但不用依赖工程外部的东西,因为他们和你的工程是打包到一起的.但是直到最近,并没有好得
方法来管理一个rails工程对gem的依赖,所以我们不得不使用自己的策略.

但rails新的版本中使用了一个很好的办法来管理gem依赖,在我们的environment.rb中写下如下代码

Rails::Initializer.run do |config| 

  # Require the latest version of haml
  config.gem "haml"

  # Require a specific version of chronic
  config.gem "chronic", :version => '0.2.3'

  # Require a gem from a non-standard repo
  config.gem "hpricot", :source => "http://code.whytheluckystiff.net"

  # Require a gem that needs to require a file different than the gem's name
  # I.e. if you normally load the gem with require 'aws/s3' instead of
  # require 'aws-s3' then you would need to specify the :lib option
  config.gem "aws-s3", :lib => "aws/s3" 
end 


现在,当你的程序启动时.rails会自动找到并且require所有你列出来的gem.但是如果你的系统并没有安装所有的这些gem呢?这里有一个rake task会安装那些你你列出来的gem:

rake gems:install


当然,在运行这条命令前,你可以用rake gems这条命令来查看你的gem的依赖关系.

但是,这并没有把这些gem打包到你的工程,他只是引用系统的gem.如果你想吧他们存放到你的工程中,你可以使用这条命令:
rake gems:unpack


你还可以指定特定的gem来存放:
# Unpack only the hpricot gem to vendor/gems
rake gems:unpack GEM=hpricot


这样就会吧gem存放到 vender/gems/hpricot-0.5,他会在启动是被自动加载.

现在你可以选择为每个environment安装所需的gem,也可以把gem存放你的代码中.

Rails2.1中的新东西之三: Dirty Objects

Rails2.1中的新东西之二: Gem Dependencies

Rails2.1中的新东西之一: has-one-through
17
1
评论 共 7 条 请登录后发表评论
7 楼 javy_liu 2011-06-17 01:33
rvm 不错,但依赖网络
可是反过来想一下,现在网站开发哪有不依赖网络的

6 楼 QQbyte 2008-05-23 14:51
的确不错,方便多了。
5 楼 pig345 2008-05-23 13:39
这个东西不错,尽量减少rails的环境依赖性。
4 楼 dogstar 2008-05-23 13:28
以前隐隐感觉到rails的plugin放到ruby的gem中统一管理很不爽.现在终于有人来改变这一现状了.(可能java写多了.依赖的jar都会放到工程中,而不是放到jdk中.)
3 楼 Raecoo 2008-05-23 10:39
merb中就已经很好的解决了类似问题
2 楼 luoye6401531 2008-05-23 10:34
希望大家进行更深入的讨论,这个特性确实好处多多.
没有升级的可以参考这篇http://errtheblog.com/posts/50-vendor-everything
1 楼 QuakeWang 2008-05-23 08:28
我翻译过另外其他的3个值得关注的rails2.1新特性:

http://www.javaeye.com/topic/189171

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 实时控制软件的质量

    如何确保嵌入式实时控制软件的质量?对这类软件的生产过程如何进行有效的质量控制?这是一个重要的研究课题。为解决软件危机而产生和发展起来的软件工程成功地解决了软件开发中存在的许多问题。它不仅对软件开发、设计和生产有直接影响,而且对提高软件质量有显著成效。实践表明,使用软件工程方法,可达到一般的质量要求。但当软件质量要求更高时,则必须在实施软件工程的同时,采取...

  • 微型计算机软件系统分为什么,微型计算机软件微型计算机软件主要包括哪些软件?...

    微计算机软件系统可以分为两类: 系统软件和应用软件.一个,系统软件1. 操作系统(OS)2. 语言处理系统(翻译程序)3. 服务程序4. 管理系统第二,应用软件旨在解决各种实际问题的程序系统称为应用程序软件. 从客户的角度来看,它可以分为通用软件和专用软件.微型计算机系统缩写为“微型计算机系统”,它是由微型计算机,显示,输入和输出设备,电源和控制面板组成的计算机系统. 配备了操作系统,高级语言和各...

  • 实时控制软件的质量控制

    如何确保嵌入式实时控制软件的质量?对这类软件的生产过程如何进行有效的质量控制?这是一个重要的研究课题。为解决软件危机而产生和发展起来的软件工程成功地解决了软件开发中存在的许多问题。它不仅对软件开发、设计和生产有直接影响,而且对提高软件质量有显著成效。实践表明,使用软件工程方法,可达到一般的质量要求。但当软件质量要求更高时,则必须在实施软件工程的同时,采取一些专门的可靠性工程技术和方法,以保证需求的

  • 项目管理中的配置管理

    配置管理的目标:为了系统地控制配置变更,在系统的整个生命周期中维持配置的完整性和可跟踪性,标识系统在不同时间点上的配置。配置管理的主要活动:制定配置管理计划、配置标识、配置控制、配置状态报告、配置审计、发布管理和交付。配置审计的功能: (1)防止向用户提交不合格的产品; (2)发现不完善的实现; (3)找出各配置项不匹配或者不相容的现象; (4)确认配置项已在所要求的质量控制后纳入基线并入库

  • Ruby On Rails 2.1新特性介绍_第一章(Introduction)

    David Heinemeier Hansson于2004年7月,从其项目Basecamp中抽取并发布了Ruby On Rails框架,三年后,在2007年12月7日发布了具有划时代意义的Ruby On Rails 2.0版本,其中包含了一系列的新内容。接下来的六个月,全...

  • Rails 2.1值得关注的新特性

    [url=http://www.iteye.com/news/2118]Rails 2.1快出来了[/url],和2.0相比它又添加了很多新特性,列举一下我认为值得关注的新特性: [size=medium]1. Has Finder 功能[/size] 广受欢迎的[url=...

  • Ruby on Rails环境配置(windows ruby 1.8.6 gem 1.3.1 rails 2.2.3)

    打开DOC 输入 ruby -v 命令  显示ruby 1.8.6 表示安装成功  (有可能安装成功后,输入ruby -v提示命名不存在,重启电脑应该可以解决,本人安 装时碰到此问题) <br />二.Rails安装 <br />1、...

  • #110 Gem Dependencies

    In Rails 2.1 we now have the ability to set gem dependencies. Now it's easier than ever to specify which ruby gems our rails app relies on. [code="java"]# config/environment.rb config.gem ...

  • 如何分辨支持rails unpack操作的gem

    你也可以在项目运行时列出正在被使用...如果其中有个gem含有文件rails/init.rb 并且你想将它存放在你的项目中,可以用: # Copy the specified gem to vendor/gems/nome_do_gem-x.x.x rake gems:unpack GEM=gem_na...

  • 实时控制软件第二次作业

    1、安装Qemu 。 疑问:”把路径添加到$PATH变量中“ 是什么意思? 2、编译,生成了hello_rtos.elf文件。 3、在Demo1目录下运行脚本文件。 4、GDB调试。 5、编写任务。 Sender_Task ` void Sender_Task(void *pvParameters) { long sendnum = 0; while (1) { sendn...

  • Ruby on rails初体验(一)

    1.Ruby on rails初体验接触ruby on rails 已经有一段时间了,想记录一下自己的rails历程。自己写一些小例子来帮助学习。  Rails 适用于那些以数据为中心的应用,很多应用的核心部分包括一个数据库,这些引用的存在...

  • ruby on rails_如何设置Ruby on Rails GraphQL API

    在终端窗口中运行以下命令: rails new rails_graphql -d=postgresql -T --api rails新rails_graphql -d = postgresql -T --api This creates a new Rails application in a directory named rails_graphql and ...

  • ruby on rails_DB2和Ruby on Rails入门

    Ruby on Rails于2004年发布,已Swift成为Web应用程序开发中最流行的框架之一。 这个开源项目也称为Rails或RoR,它使用模型-视图-控制器(MVC)架构,Ruby面向对象的脚本语言以及简单的原则,例如“约定之上的配置”...

  • ruby on rails环境搭建

    gem install rails --include-dependencies 3.2 本地安装Rails rails下载地址:  http://rubyforge.org/frs/?group_id=307 rails activesupport 下载地址:  http://rubyforge.org/frs/?group_id=570 ...

  • [0001] CentOS7下部署nginx+mongrel+rails环境

    继续查找资料,没有发现对于该问题的描述,后来推测可能是rails版本太新导致的,故卸载了已安装的Rails 4.1.6,安装Rails 3.2.0,重新生成工程,再次使用mongrel_rails start启动服务,发现可以正常启动, ...

  • DB2 与 Ruby on Rails 入门

    Ruby 语言的出现并与强大的 Rails 框架结合,为 Web 解决方案的开发带来了巨大的机遇。随着 IBM_DB 适配器和驱动程序的引入,Rails 应用程序现在可以无缝地与 IBM 数据服务器进行交互。本文是 DB2 wi...

  • rails 模块化_在Rails Monolith内部加强模块化

    rails 模块化 在Rails Monolith内部加强模块化 (Enforcing Modularity inside a Rails Monolith)Photo by Hulki Okan Tabak on Unsplash Hulki Okan Tabak在Unsplash上的照片 Like many startups of its age, ...

  • centos+nginx+ruby(and rails)+mongrel+php+mysql centos安装php常见错误

    安装gcc yum -y install gcc 安装g++ yum install gcc-c++ ...wget http://mirror.centos.org/centos-5/5/os/i386/CentOS/libxml2-2.6.26-2.1.2.8.i386.rpm rpm -Uvh libxml2-2.6.26-2.1.12.el5_7.2.i3

  • RoR创建项目流程

    Rails 入门 一个月前在不懂任何rails知识的情况,就已经把这个入门项目搭建成功,足以说明rails on ruby做web开发的简单,经过一个月的学习对rails有了一定的了解,今天趁着周末再来试着搭建一遍,增加自己的认识。更...

Global site tag (gtag.js) - Google Analytics