它实际上只是您想在 IIS 上部署的 Rails 应用程序,还是必须是 JRuby?如果它只是 Ruby on Rails 而不是 JRuby,那么这里是您的分步指南。但是,如果您想使用 IIS 是 JRuby,那就别无所求。以下是我遵循的步骤;我的环境是 Windows 7 RC 上的 IIS7,Java 1.6.0_13。
- 首先,我从
http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
.
- 然后我将存档解压缩到
C:\JRuby
.
- 我将环境变量 JRUBY_HOME 设置为
c:\JRuby\jruby-1.3.1
.
- 我添加
%JRUBY_HOME%\bin
到路径中。
我将在接下来的步骤中穿插屏幕抓取。
让我们运行 jruby 来确认它是否安装成功:
C:\用户\Vinay>jruby -v
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1.
6.0_13) [x86-java]
到目前为止还可以。让我们使用 JRuby 安装 Rails:
C:\Users\Vinay>gem install json-jruby
C:\Users\Vinay>gem install rails --no-rdoc
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装activerecord-2.3.3
成功安装 rack-1.0.0
成功安装actionpack-2.3.3
成功安装actionmailer-2.3.3
成功安装activeresource-2.3.3
成功安装rails-2.3.3
安装了 6 个宝石
为 activerecord-2.3.3 安装 ri 文档...
正在为 rack-1.0.0 安装 ri 文档...
正在为 actionpack-2.3.3 安装 ri 文档...
为 actionmailer-2.3.3 安装 ri 文档...
为 activeresource-2.3.3 安装 ri 文档...
正在为 rails-2.3.3 安装 ri 文档...
让我们创建一个名为的 Rails 应用程序jror
:
C:\Users\Vinay\Projects>rails new jror
创造
创建应用程序/控制器
创建应用程序/助手
创建应用程序/模型
创建应用程序/视图/布局
创建配置/环境
创建配置/初始化程序
创建配置/语言环境
创建数据库
创建文档
创建库
创建库/任务
创建日志
创建公共/图像
创建公共/javascripts
创建公共/样式表
创建脚本/性能
创建测试/夹具
创建测试/功能
创建测试/集成
创建测试/性能
创建测试/单元
创建供应商
创建供应商/插件
创建 tmp/会话
创建 tmp/sockets
创建 tmp/缓存
创建 tmp/pids
创建耙文件
创建自述文件
创建应用程序/控制器/application_controller.rb
创建 app/helpers/application_helper.rb
创建 config/database.yml
创建 config/routes.rb
创建 config/locales/en.yml
创建 config/initializers/backtrace_silencers.rb
创建 config/initializers/inflections.rb
创建 config/initializers/mime_types.rb
创建 config/initializers/new_rails_defaults.rb
创建 config/initializers/session_store.rb
创建 config/environment.rb
创建配置/boot.rb
创建 config/environments/production.rb
创建 config/environments/development.rb
创建配置/环境/test.rb
创建脚本/关于
创建脚本/控制台
创建脚本/dbconsole
创建脚本/销毁
创建脚本/生成
创建脚本/运行器
创建脚本/服务器
创建脚本/插件
创建脚本/性能/基准
创建脚本/性能/分析器
创建 test/test_helper.rb
创建测试/性能/browsing_test.rb
创建 public/404.html
创建 public/422.html
创建 public/500.html
创建 public/index.html
创建公共/favicon.ico
创建 public/robots.txt
创建 public/images/rails.png
创建 public/javascripts/prototype.js
创建 public/javascripts/effects.js
创建 public/javascripts/dragdrop.js
创建公共/javascripts/controls.js
创建 public/javascripts/application.js
创建文档/README_FOR_APP
创建日志/server.log
创建日志/production.log
创建日志/development.log
创建日志/test.log
让我们运行WEBrick
以确保一切都按预期工作:
C:\Users\Vinay\Projects\jror>jruby 脚本/服务器
=> 启动 WEBrick
=> Rails 2.3.3 应用程序从 http://0.0.0.0:3000 开始
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
=> 使用 -d 调用以分离
=> Ctrl-C 关闭服务器
[2009-07-21 17:51:21] INFO WEBrick 1.3.1
[2009-07-21 17:51:21] 信息 ruby 1.8.6 (2009-06-15) [java]
[2009-07-21 17:51:21] 信息 WEBrick::HTTPServer#start: pid=2440 端口=3000
导航http://localhost:3000/
并确认您的 Rails 应用程序出现。

果然,就在那里。
接下来是建立一种机制,将向 IIS 发出的选定请求代理到 JRuby。为此,需要 URL 重写器/反向代理。为此,我使用了ISAPI Rewrite 3。您可以选择使用不同的工具(例如,Microsoft ISA)。ISAPI Rewrite 3 每台服务器 99 美元,物超所值,试用期为 45 天。
对于 ISAPI Rewrite 3,我将httpd.conf
配置文件设置如下:
重写引擎开启
RewriteBase /
重写日志“C:\temp\rewrite.log”
RewriteLogLevel 9
RewriteProxy jror/(.*) http://localhost:3000/$1
这代理了表单的 URL
http://localhost/jror/abc123
到
http://localhost:3000/abc123
所以现在,我们可以通过 IIS 导航http://localhost/jror/
并查看 JRuby 提供的请求:

猜猜看:没有战争!对 Rails 应用程序的任何更改都应直接通过。
这是我的 Firebug 控制台的屏幕截图,显示了该页面的响应标头:

当然,这更像是一种开发设置,而不是生产设置——但对于生产用途,您可能需要使用可用于生产的应用服务器,例如 Glassfish,这将需要使用那些讨厌的战争 ;-)
如果您确实想使用战争部署到 Java 应用服务器,您可以使用Warbler轻松将您的应用程序打包到战争中。
要在 Glassfish V3 上运行,需要一些额外的步骤。部署和运行 Rails 应用程序的最快方法是使用 GlassFish gem,它仅包含 GlassFish v3 内核 ( Grizzly
) 和一些实用程序,因此提供了最小膨胀设置。让我们安装gem:
C:\Users\Vinay\Projects\jror>gem install glassfish
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装 glassfish-0.9.5-universal-java
已安装 1 个宝石
为 glassfish-0.9.5-universal-java 安装 ri 文档...
为 glassfish-0.9.5-universal-java 安装 RDoc 文档...
在 Glassfish 上运行 Rails 应用程序:
C:\Users\Vinay\Projects>glassfish jror
在开发环境中启动 GlassFish 服务器:192.168.0.17:3000...
将日志消息写入:jror/log/development.log。
按 Ctrl+C 停止。
如您所见,您在 Glassfish 上运行,但仍然不需要战争!httpd.conf
除了(在我的设置中)将代理更改为指向 Glassfish 服务器使用的 IP 地址和端口之外,无需在 IIS 端进行任何更改。如果您想全力以赴并安装完整的 Glassfish 服务器并在其上运行 Rails 应用程序,您不妨按照Glassfish 团队的这些说明进行操作。它们包括安装和运行 Glassfish、服务器、部署和取消部署 Rails 应用程序以及在生产模式下运行应用程序。
这是为完整的 Glassfish 服务器创建战争文件所需的内容。
安装莺:
C:\Users\Vinay\Projects>gem 安装莺
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装warbler-0.9.13
已安装 1 个宝石
为 warbler-0.9.13 安装 ri 文档...
为 warbler-0.9.13 安装 RDoc 文档...
运行莺:
C:\Users\Vinay\Projects\jror>warble
mkdir -p tmp/war/WEB-INF/gems/规范
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rails-2.3.3.gemspec tm
/war/WEB-INF/gems/specifications/rails-2.3.3.gemspec
mkdir -p tmp/war/WEB-INF/gems/gems
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rake-0.8.7.gemspec tmp
战争/WEB-INF/gems/specifications/rake-0.8.7.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activesupport-2.3.3.ge
规范 tmp/war/WEB-INF/gems/specifications/activesupport-2.3.3.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activerecord-2.3.3.gem
pec tmp/war/WEB-INF/gems/specifications/activerecord-2.3.3.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionpack-2.3.3.gemsp
c tmp/war/WEB-INF/gems/specifications/actionpack-2.3.3.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rack-1.0.0.gemspec tmp
战争/WEB-INF/gems/specifications/rack-1.0.0.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionmailer-2.3.3.gem
pec tmp/war/WEB-INF/gems/specifications/actionmailer-2.3.3.gemspec
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activeresource-2.3.3.g
mspec tmp/war/WEB-INF/gems/specifications/activeresource-2.3.3.gemspec
mkdir -p tmp/war/WEB-INF/app
mkdir -p tmp/war/WEB-INF/config
mkdir -p tmp/war/WEB-INF/lib
mkdir -p tmp/war/WEB-INF/log
mkdir -p tmp/war/WEB-INF/vendor
mkdir -p tmp/war/WEB-INF/tmp
mkdir -p tmp/war/WEB-INF/app/controllers
mkdir -p tmp/war/WEB-INF/app/helpers
mkdir -p tmp/war/WEB-INF/app/models
mkdir -p tmp/war/WEB-INF/app/views
cp app/controllers/application_controller.rb tmp/war/WEB-INF/app/controllers/ap
lication_controller.rb
cp app/helpers/application_helper.rb tmp/war/WEB-INF/app/helpers/application_he
per.rb
mkdir -p tmp/war/WEB-INF/app/views/layouts
cp config/boot.rb tmp/war/WEB-INF/config/boot.rb
cp config/database.yml tmp/war/WEB-INF/config/database.yml
cp config/environment.rb tmp/war/WEB-INF/config/environment.rb
mkdir -p tmp/war/WEB-INF/config/environments
mkdir -p tmp/war/WEB-INF/config/initializers
mkdir -p tmp/war/WEB-INF/config/locales
cp config/routes.rb tmp/war/WEB-INF/config/routes.rb
cp config/environments/development.rb tmp/war/WEB-INF/config/environments/devel
pment.rb
cp config/environments/production.rb tmp/war/WEB-INF/config/environments/product
离子rb
cp config/environments/test.rb tmp/war/WEB-INF/config/environments/test.rb
cp config/initializers/backtrace_silencers.rb tmp/war/WEB-INF/config/initialize
s/backtrace_silencers.rb
cp config/initializers/inflections.rb tmp/war/WEB-INF/config/initializers/infle
选项.rb
cp config/initializers/mime_types.rb tmp/war/WEB-INF/config/initializers/mime_t
pes.rb
cp config/initializers/new_rails_defaults.rb tmp/war/WEB-INF/config/initializer
/new_rails_defaults.rb
cp config/initializers/session_store.rb tmp/war/WEB-INF/config/initializers/ses
ion_store.rb
cp config/locales/en.yml tmp/war/WEB-INF/config/locales/en.yml
mkdir -p tmp/war/WEB-INF/lib/tasks
mkdir -p tmp/war/WEB-INF/vendor/plugins
mkdir -p tmp/war/WEB-INF/tmp/cache
mkdir -p tmp/war/WEB-INF/tmp/pids
mkdir -p tmp/war/WEB-INF/tmp/sessions
mkdir -p tmp/war/WEB-INF/tmp/sockets
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0。
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0。
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar
cp public/404.html tmp/war/404.html
cp public/422.html tmp/war/422.html
cp public/500.html tmp/war/500.html
cp public/favicon.ico tmp/war/favicon.ico
mkdir -p tmp/战争/图像
cp public/index.html tmp/war/index.html
mkdir -p tmp/war/javascripts
cp public/robots.txt tmp/war/robots.txt
mkdir -p tmp/war/样式表
cp public/images/rails.png tmp/war/images/rails.png
cp public/javascripts/application.js tmp/war/javascripts/application.js
cp public/javascripts/controls.js tmp/war/javascripts/controls.js
cp public/javascripts/dragdrop.js tmp/war/javascripts/dragdrop.js
cp public/javascripts/effects.js tmp/war/javascripts/effects.js
cp public/javascripts/prototype.js tmp/war/javascripts/prototype.js
mkdir -p tmp/war/WEB-INF
jar cf jror.war -C tmp/war 。
C:\Users\Vinay\Projects\jror>dir jror.war
驱动器 C 中的卷没有标签。
卷序列号为 0C8D-1418
C:\Users\Vinay\Projects\jror 目录
22/07/2009 15:55 13,180,634 jror.war
1 个文件 13,180,634 字节
0 Dir(s) 7,730,462,720 字节空闲
呸!