`
fsword
  • 浏览: 164662 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[Ruby新手教学] windows上的jruby开发环境说明

阅读更多

我常常建议同事们使用ruby代替java来进行开发,但是,在公司内推广ruby有个必须考虑的问题——大多数人是工作在windows上的,而在windows上开发ruby会遇到一些问题,其中之一就是各种本地库——ruby本身可以很容易的开发c扩展,代价是这些扩展在安装时需要编译,而windows上会编译源码的人很少......

我的建议是可以采用jruby,在jruby社区的努力下,很多高质量的ruby库有了纯java实现,拜java所赐,这些三方库可以很容易的跨平台使用。

 

安装jruby和安装java类似,下载、解压、设置path变量即可。

就像java有maven作为三方库依赖管理工具一样,ruby社区也有相应的工具,它叫做 rubygem ,或者简称 gem,jruby是自带gem的,执行 gem -v 可以查看详情

c:\> gem -v
1.3.6
 

gem用于管理软件包的多个版本,但是gem本身也有升级的可能,所以安装好以后建议首先升级gem,命令是:

gem update --system

 

顺便说一下,有时候升级 gem系统会遇到失败,例如

 

c:/> gem update --system
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.8.1
Updating RubyGems to 1.8.1
Installing RubyGems 1.8.1
...../jruby-1.5.6/lib/ruby/site_ruby/1.8/rubygems/defaults/jruby.rb:1224:in `require': undefined method `set_paths' for class `#<Class:01x5bf8d5b0>' (NameError)
	from /home/john/.rvm/gems/jruby-1.5.6/gems/rubygems-update-1.8.1/lib/rubygems.rb:1224
	from /home/john/.rvm/gems/jruby-1.5.6/gems/rubygems-update-1.8.1/lib/rubygems.rb:24:in `require'
	from setup.rb:24

 

这个应该是 gem 1.8.1 的 bug ,处理的方式是使用升级到较低的版本 ,这个需要手工完成:

 

; 下载 http://production.cf.rubygems.org/rubygems/rubygems-update-1.7.2.gem 然后执行下面的命令
c:/> gem install --local ./rubygems-update-1.7.2.gem 
Successfully installed rubygems-update-1.7.2
1 gem installed
Installing RDoc documentation for rubygems-update-1.7.2...
$ update_rubygems 
RubyGems 1.7.2 installed

=== 1.7.2 / 2011-04-05

* 1 Bug Fix:
  * Warn on loading bad spec array values (ntlm-http gem has nil in its cert
    chain)
.....
c:/> gem -v
1.7.2

 

另外,我们有时需要 ssl 支持,为了以后方便,建议安装 openssl 支持

 

c:\> gem install jruby-openssl
 

gem和maven类似,它也在一个服务器上维护了所有三方包的依赖关系,这个服务器,我们叫做source:

 

c:/> gem source
*** CURRENT SOURCES ***

http://rubygems.org/

 

gem source有时会很慢(搞技术的都知道我们大中华局域网有一个防火墙吧,不过也有服务器本身承载能力的原因),所以可以在公司内部建立一个代理服务,我在淘宝内部一般会开启我的 PC 提供这个服务,地址是 t-lifu.taobao.ali.com ,端口 8808 (仅限内网),你可以用这个命令添加 gem source -a http://t-lifu.taobao.ali.com:8808

 

ruby的东西一般都很直白,对刚才的命令,linux用户直接看你的$HOME/.gemrc文件就知道是怎么回事了,windows类似。

 

与maven相比,gem 并不管项目的前世今生,目的更纯粹,因而也更简单,比如下列命令:

 

gem install rails # 在本地硬盘上安装 rails (会自动install依赖包)
gem uninstall rails # 删除硬盘上的rails
gem list # 列出本地已经安装的三方包
gem search -r mongo # 在服务器上搜索名字形如 *mongo* 的三方包

有时候,你在命令行环境不知道怎么绕开那堵墙,那可以把需要的软件包(我们叫它gem包)下载下来单独安装,当然,这时你要自己注意软件包依赖:

gem install --local ./bouncy-castle-java-1.5.0145.2.gem

这并不是全部,你可以用 gem help 查看所有命令,或者用 gem help <command> 查看某个命令的详细说明:

c:/> gem help source
Usage: gem sources [options]

  Options:
    -a, --add SOURCE_URI             Add source
    -l, --list                       List sources
......

在windows下,还有一个特别恼人的问题需要注意——console下的编码,21世纪已经进行了十年,unicode越来越深入韧性,很多linux的发布版也都支持unicode家族,但是windows(例如 xp )在这一方面确实支持有限,如果你在windows下面敲命令,往往会遇到乱码的问题,这个其实很好解决——改变 codepage 就行:

chcp 65001

然后修改字体,但是这还没有完,这时候的console在驱动脚本时会有bug,所以诸如 rails, rake 这样的命令都有可能出问题(表现为不执行任何操作),好在有办法解决:

jruby -S rails ...... ; -S 参数表示在path环境变量中寻找ruby脚本,并用jruby执行
 

好了,现在你基本上已经了解了在windows环境下编写ruby程序的基础知识,do it and have fun.

 

3
0
分享到:
评论
1 楼 fsword 2011-05-22  
有个遗漏,安装时需要注意把 openssl 的支持加上:

c:\> gem install jruby-openssl

相关推荐

    NetBeans Ruby and Rails IDE with JRuby 2009

    NetBeans Ruby and Rails IDE with JRuby 2009,大家看标题就知道了啊。。好东西啊,刚得到就发上来了。。

    jruby_windows1.7and bin1.7

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端...

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby - 一个Ruby语言的Java实现,Ruby在JVM上的实现

    使用JRuby开发Web Service全攻略

    本文介绍了如何用JRuby开发Web Service。用JRuby开发Web Service,需要安装ActionWebService。安装完毕之后便可以开始调用及部署了。

    JRuby window X64 开发软件

    JRuby window X64 开发软件

    如何在NetBeans环境下进行JRuby开发

    JRuby是在著名的Ruby编程语言的基础上的纯Java的一种实现,它是动态的,开源的编程语言,特色是简单,具有很高的开发效率。Ruby具有很好的语法,编程语句读起来很自然,并且很容易编写。这篇文章给你演示如何使用...

    jruby开发----jar

    jruby与java使用开发,听说jruby能是swing的调用变为更简单

    jruby_windows_1_6_4安装文件

    jruby是从官网上downLoad的,可以在ruby程序中调用Java类库,也可以在Java程序中调用ruby类库,两者使用都相当方便,需要的可以下载尝试。

    jruby:JRuby,Ruby在JVM上的实现

    JRuby-在JVM上实现Ruby语言主: 9.2分支:关于JRuby是使用JVM的的实现。 它旨在成为Ruby的完整,正确和快速的实现,同时提供强大的新功能,例如没有并发,真正的并行性以及与Java语言的紧密集成,以允许您使用Java。...

    jruby1.7.8版本呢

    jruby是一个ruby的解析器,可将ruby解析为java文件,jruby作为ruby解析器时刻调用java代码

    ython读取由ruby/jruby生成的yml数据

    用python读取由ruby/jruby生成的yml数据

    JRuby 实战入门

    Ruby 、 Rails 、JRuby 都是令人兴奋的技术

    JRuby,在JVM上实现Ruby-Ruby开发

    JRuby-JVM Master上的Ruby语言的实现:9.1分支:关于JRuby是使用JVM的Ruby语言的实现。 它旨在成为Ruby,JRuby的完整,正确和快速的实现-JVM Master上的Ruby语言的实现:9.1分支:关于JRuby是使用JVM的Ruby语言的...

    JRuby+Swing是开发人员钟情的选择

    JRuby是用于Java平台的一个Ruby实现。它使您可以通过JVM执行Ruby代码。在JRuby下运行的Ruby代码还可以装载和使用Java库,包括Swing。所以JRuby+Swing的组合,也成为了开发人员的选择之一。

    ruby_vs_crystal:三种 Ruby(MRI、JRuby 和 Rubinius)与 Crystal 的比较

    三种 Ruby(MRI、JRuby 和 Rubinius)与 Crystal 的比较 设置 Mac OSX(小牛队) Ruby MacBook Air(1.3 Intel i5,4GB 1600 MHz DDR3) 水晶 $ time ./foo_crystal real 0m7.971s user 0m7.994s sys 0m0.250s ...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    JRuby和Rails-让Ruby语言融入于Java项目

    jruby-dist-9.1.15.0-bin.zip

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新说明: JRuby 9.1.x is our current ...

    Using JRuby.pdf.英文原版. JRuby教程

    Now you can bring the best of Ruby into the world of Java, with Using JRuby. Come to the source for the JRuby core team’s insights and insider tips. You’ll learn how to call Java objects seamlessly ...

    jruby-dist-9.1.15.0-bin.tar.gz

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新说明: JRuby 9.1.x is our current ...

    Ruby-TorqueBox一个Ruby应用程序服务器建立在JBossAS7和JRuby之上

    TorqueBox - 一个Ruby应用程序服务器建立在JBoss AS7和JRuby之上

Global site tag (gtag.js) - Google Analytics