rip*_*747 8 iis ruby-on-rails jruby
有没有人有明确的说明设置jRuby与IIS一起工作.
编辑:
我正在寻找的是使用IIS和jRuby在Windows上运行Ruby on Rails应用程序的分步说明.原因是因为我在野外提出问题时找不到其他任何"使用Linux".对于大多数人来说,Windows是主要的开发和部署环境,因此使用基于Linux的服务器是不可能的.此外,IIS还包含在Windows中,并提供与Active Directory的出色集成,因此使用Apache也是不可能的.
最后一件事是使用war文件是一场噩梦,请包括如何通过复制文件或其他任何使用war文件来部署rails应用程序的说明.
Vin*_*jip 10
它实际上只是你想在IIS上部署的Rails应用程序,还是必须是JRuby?如果它只是Ruby on Rails而不是JRuby,那么这是您的分步指南.但是如果它是JRuby你想要使用IIS,那就别再看了.以下是我遵循的步骤; 我的环境是Windows 7 RC,Java 1.6.0_13上的IIS7.
http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz.C:\JRuby.c:\JRuby\jruby-1.3.1.%JRUBY_HOME%\bin了这条道路.我将穿过屏幕抓取穿插的后续步骤.
让我们运行jruby以确认它已成功安装:
C:\Users\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 limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed activerecord-2.3.3 Successfully installed rack-1.0.0 Successfully installed actionpack-2.3.3 Successfully installed actionmailer-2.3.3 Successfully installed activeresource-2.3.3 Successfully installed rails-2.3.3 6 gems installed Installing ri documentation for activerecord-2.3.3... Installing ri documentation for rack-1.0.0... Installing ri documentation for actionpack-2.3.3... Installing ri documentation for actionmailer-2.3.3... Installing ri documentation for activeresource-2.3.3... Installing ri documentation for rails-2.3.3...
让我们创建一个名为的Rails应用程序jror:
C:\Users\Vinay\Projects>rails new jror
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create test/fixtures
create test/functional
create test/integration
create test/performance
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create config/database.yml
create config/routes.rb
create config/locales/en.yml
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/initializers/session_store.rb
create config/environment.rb
create config/boot.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/dbconsole
create script/destroy
create script/generate
create script/runner
create script/server
create script/plugin
create script/performance/benchmarker
create script/performance/profiler
create test/test_helper.rb
create test/performance/browsing_test.rb
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
让我们运行WEBrick以确保一切按预期工作:
C:\Users\Vinay\Projects\jror>jruby script/server => Booting WEBrick => Rails 2.3.3 application starting on http://0.0.0.0:3000 JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL => Call with -d to detach => Ctrl-C to shutdown server [2009-07-21 17:51:21] INFO WEBrick 1.3.1 [2009-07-21 17:51:21] INFO ruby 1.8.6 (2009-06-15) [java] [2009-07-21 17:51:21] INFO WEBrick::HTTPServer#start: pid=2440 port=3000
导航http://localhost:3000/并确认您的Rails应用程序出现.

果然,就是这样.
接下来要建立一种机制,将对IIS发出的选定请求代理到JRuby.为此,需要URL重写器/反向代理.我为此使用了ISAPI Rewrite 3.您可以选择使用其他工具(例如,Microsoft ISA).ISAPI Rewrite 3的价值很高,每台服务器99美元,并且有45天的试用期.
对于ISAPI Rewrite 3,我httpd.conf按如下方式设置配置文件:
RewriteEngine on RewriteBase / RewriteLog "C:\temp\rewrite.log" RewriteLogLevel 9 RewriteProxy jror/(.*) http://localhost:3000/$1
这代理了表单的URL
http://localhost/jror/abc123
Run Code Online (Sandbox Code Playgroud)
至
http://localhost:3000/abc123
Run Code Online (Sandbox Code Playgroud)
现在,我们可以导航到http://localhost/jror/JRuby提供的请求,但是通过IIS:

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

当然,这更像是一个开发设置而不是生产设置 - 但是对于生产用途,您可能需要使用生产就绪的应用程序服务器,例如Glassfish,这将需要使用那些讨厌的战争;-)
如果您确实希望使用战争部署到Java应用程序服务器,则可以使用Warbler轻松将应用程序打包成战争.
要在Glassfish V3上运行,还需要执行一些其他步骤.部署和运行Rails应用程序的最快方法是使用GlassFish gem,它只包含GlassFish v3内核(Grizzly)和一些实用程序,因此提供最小膨胀设置.让我们安装gem:
C:\Users\Vinay\Projects\jror>gem install glassfish JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed glassfish-0.9.5-universal-java 1 gem installed Installing ri documentation for glassfish-0.9.5-universal-java... Installing RDoc documentation for glassfish-0.9.5-universal-java...
在Glassfish上运行Rails应用程序:
C:\Users\Vinay\Projects>glassfish jror Starting GlassFish server at: 192.168.0.17:3000 in development environment... Writing log messages to: jror/log/development.log. Press Ctrl+C to stop.
如您所见,您在Glassfish上运行但仍然不需要战争!除了(在httpd.conf我的设置中)将代理更改为指向Glassfish服务器使用的IP地址和端口之外,IIS端不需要进行任何更改.如果您想要全部使用并安装完整的Glassfish服务器并在其上运行Rails应用程序,您也可以按照Glassfish团队的这些说明进行操作.它们包括安装和运行Glassfish,服务器,部署和取消部署Rails应用程序以及在生产模式下运行应用程序.
以下是为完整的Glassfish服务器创建war文件所需的内容.
安装Warbler:
C:\Users\Vinay\Projects>gem install warbler JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed warbler-0.9.13 1 gem installed Installing ri documentation for warbler-0.9.13... Installing RDoc documentation for warbler-0.9.13...
运行Warbler:
C:\Users\Vinay\Projects\jror>warble
mkdir -p tmp/war/WEB-INF/gems/specifications
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
war/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
spec 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
war/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/produc
ion.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
tions.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/war/images
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/stylesheets
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
Volume in drive C has no label.
Volume Serial Number is 0C8D-1418
Directory of C:\Users\Vinay\Projects\jror
22/07/2009 15:55 13,180,634 jror.war
1 File(s) 13,180,634 bytes
0 Dir(s) 7,730,462,720 bytes free
唷!
您首先需要安装Tomcat.请参阅此方法,以便与IIS一起设置Tomcat.
使用JRuby,您将构建WAR文件.只需将它们放入Tomcat的webapps文件夹中即可开始使用.
更新:好的,您需要集成两个不能一起使用的技术:IIS和JRuby.好处是JRuby既是Java又是Ruby,你可以使用两者中最好的.Ruby的编写效率更高,更有趣,但Java更适合部署(特别是在需要使用IIS时).所以我的建议仍然存在.创建一个war文件,安装Tomcat并在那里部署war文件.部署war文件就像在webapps文件夹中复制一样简单.以下是您需要遵循的步骤:
如果您仍然不想使用WAR文件,请查看此博客点.它描述了如何使用IIS运行RoR.我相信对JRuby而言,程序也是一样的.无论如何,如果你想避免使用WAR文件,那么CGI方法是唯一的方法.