ruby项目如何配置RVM自动切换ruby-version/gemset

RVM的wiki上有好几种指定ruby-version/gemset的方法。我推荐的是使用两个配置文件.ruby-version,.ruby-gemset分别指定ruby的版本和gemset。这种方式的优点是安全,方便,详细的解释请见参考链接。

在项目根目录下,新建下面两个文件。
.ruby-version:

1.9.3-p448 #指定项目的ruby版本

.ruby-gemset:

your_project_gemset #指定项目的gemset

配置好之后,cd到项目的根目录下,如果未安装该版本的ruby,命令行会有提示信息。如果没有指定的gemset,会新建gemset。

给不同的项目设置单独的gemset,能避免版本冲突,运行ruby命令时可以放心的省掉‘bundle exec’。

参考链接:

使用ruby解析xml的简单例子

在使用hudson持续集成的工作中,我们会在构建完成后运行一个自动部署脚本。
自动部署脚本需要知道构建的模块信息,用ruby解析pom.xml是比较合适的选择。

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <artifactId>sample</artifactId>
        <version>0.1.9-SNAPSHOT</version>
...
</project>

ruby脚本片段如下:

#!/usr/bin/env ruby

require "rexml/document"
doc = REXML::Document.new(File.open('pom.xml'))

artifactId = doc.elements["project/artifactId"].text
version = doc.elements["project/version"].text

上面的脚本,使用rexml模块解析xml。
注意:如果版本号是通过继承得来(或是在profile里指定的),先使用maven生成实际生效的pom.xml才能获得正确的结果。
Tips:使用mvn help:effective-pom生成实际生效的pom。