`
fsword
  • 浏览: 170211 次
  • 性别: 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

相关推荐

    jruby-src-1.0

    无论你是Ruby新手还是有经验的开发者,了解JRuby可以帮助你扩展技能树,将Ruby的优美特性带入到Java世界。 总的来说,"jruby-src-1.0.zip"是一个对于学习JRuby和Ruby在Java平台上的应用至关重要的资源。它不仅提供...

    JRuby 实战入门

    3. **跨平台**:基于JVM,JRuby可以在任何支持JVM的操作系统上运行,包括Windows、Linux、macOS等。 4. **开发效率**:Ruby的简洁语法和Rails框架的便利性,使得开发过程更加高效,结合Java的稳定性和成熟性,使得...

    Ruby语言教程.docx

    - **多平台兼容性**:Ruby可运行于多种操作系统平台上,包括但不限于Windows、macOS和各种UNIX系统。 #### 二、Ruby语言特点 - **动态性**:Ruby是一种动态类型的编程语言,这意味着变量的类型可以在运行时被改变...

    Build Awesome Command-Line Applications in Ruby

    通过以上分析可以看出,《构建卓越的Ruby命令行应用》是一本极具价值的参考书,无论你是Ruby新手还是有经验的开发者,都能从中获得宝贵的知识和灵感。它不仅教你如何编写出高效的脚本,更重要的是教会你如何创造出让...

    rubyrails生态系统

    实施 Rails 应用涉及多个步骤,包括选择合适的数据库、设置开发环境、编写代码和测试等。合理规划这些步骤可以确保项目的顺利进行。 #### 咨询服务 一些专业咨询公司提供 Ruby 和 Rails 方面的技术咨询和服务。...

    Red5说明文档 flex视频

    除了Java,Red5还支持JRuby,即运行于Java虚拟机上的Ruby语言。文档中包含了使用JRuby编写Red5应用程序的示例,如`application.rb`和`demoservice.rb`,展示了如何将Ruby代码集成到Red5中,扩展其功能。关于RTMPT...

Global site tag (gtag.js) - Google Analytics