Pregunta

¿Alguien tiene instrucciones claras para configurar jRuby para que funcione con IIS?

Editar:

Lo que estoy buscando son instrucciones paso a paso para hacer que una aplicación Ruby on Rails funcione en Windows usando IIS y jRuby.La razón es que no puedo encontrar nada más que "usar Linux" cuando hago la pregunta en la naturaleza.Para la mayoría de las personas, Windows es el principal entorno de desarrollo e implementación, por lo que utilizar un servidor basado en Linux está fuera de discusión.Además, IIS se incluye con Windows y proporciona una integración superior con Active Directory, por lo que el uso de Apache también está fuera de discusión.

Lo último es que usar archivos war es una pesadilla; incluya instrucciones sobre cómo implementar aplicaciones Rails simplemente copiando los archivos o cualquier otra cosa que no sea usar archivos war.

¿Fue útil?

Solución

¿Es realmente sólo una aplicación Rails que desea implementar en IIS, o debe ser JRuby?Si es solo Ruby on Rails en lugar de JRuby, entonces aquí está tu guía paso a paso.Pero si es JRuby con quien desea trabajar con IIS, no busque más.A continuación se detallan los pasos que seguí;mi entorno es IIS7 en Windows 7 RC, Java 1.6.0_13.

  1. Primero, descargué JRuby de http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz.
  2. Luego extraje el archivo para C:\JRuby.
  3. Configuré la variable de entorno JRUBY_HOME en c:\JRuby\jruby-1.3.1.
  4. yo añadí %JRUBY_HOME%\bin al camino.

Seguiré los siguientes pasos con capturas de pantalla intercaladas.

Ejecutemos jruby para confirmar que se instaló correctamente:

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]

Bien hasta ahora.Usemos JRuby para instalar 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...

Creemos una aplicación Rails llamada 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

Corramos WEBrick para asegurarse de que todo funcione como se esperaba:

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

Navegar a http://localhost:3000/ y confirme que aparece su aplicación Rails.

Rails app on WEBrick

Efectivamente, ahí está.

Lo siguiente es configurar un mecanismo mediante el cual las solicitudes seleccionadas realizadas a IIS se envíen a JRuby.Para hacer esto, se necesita una reescritura de URL/proxy inverso.solía Reescritura ISAPI 3 para esto.Puede optar por utilizar una herramienta diferente (por ejemplo, Microsoft ISA).ISAPI Rewrite 3 tiene una buena relación calidad-precio: 99 dólares por servidor y viene con un período de prueba de 45 días.

Para ISAPI Rewrite 3, configuré el httpd.conf archivo de configuración de la siguiente manera:

RewriteEngine on
RewriteBase /
RewriteLog "C:\temp\rewrite.log"
RewriteLogLevel 9
RewriteProxy jror/(.*) http://localhost:3000/$1

Este proxy URL del formulario

http://localhost/jror/abc123

a

http://localhost:3000/abc123

Entonces ahora podemos navegar a http://localhost/jror/ y ver la solicitud atendida por JRuby pero a través de IIS:

Rails app on WEBrick through IIS

Y adivina qué: sin guerras!Cualquier cambio en su aplicación Rails debería llegar directamente.

Aquí hay una captura de pantalla de mi consola Firebug que muestra los encabezados de respuesta para esa página:

alt text

Por supuesto, esto es más una configuración de desarrollo que de producción, pero para uso en producción probablemente necesitarás usar un servidor de aplicaciones listo para producción como Glassfish, lo que implicará el uso de esas molestas guerras ;-)

Si desea implementar en un servidor de aplicaciones Java usando wars, puede usar Curruca para empaquetar fácilmente su aplicación en una guerra.

Para ejecutar Glassfish V3, se requieren algunos pasos adicionales.La forma más rápida de implementar y ejecutar sus aplicaciones Rails es usar la gema GlassFish, que consta únicamente del kernel GlassFish v3 (Grizzly) y algunas utilidades, proporcionando así una configuración mínima.Instalemos la gema:

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...

Ejecute la aplicación Rails en Glassfish:

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.

Como puedes ver, estás ejecutando Glassfish pero aún así no se requieren guerras.No se necesitan cambios en el lado de IIS, aparte de (en httpd.conf en mi configuración) cambiando el proxy para que apunte a la dirección IP y al puerto utilizado por el servidor Glassfish.Si desea hacer todo lo posible e instalar el servidor Glassfish completo y ejecutar aplicaciones Rails en él, también puede seguir estas instrucciones del equipo de Glassfish.Cubren la instalación y ejecución de Glassfish, el servidor, la implementación y anulación de la implementación de aplicaciones Rails y la ejecución de las aplicaciones en modo de producción.

Esto es lo que necesita para crear archivos war para el servidor Glassfish completo.

Instalar Reinita:

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...

Ejecutar Reinita:

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

¡Uf!

Otros consejos

Es necesario primero instalar Tomcat. Ver este cómo-a para configurar Tomcat junto con IIS.

Con JRuby que se va a construir archivos WAR. Simplemente dejar esto en la carpeta webapps de Tomcat y ya está listo para ir.

Actualización: Ok, es necesario integrar dos tecnologías que no estaban destinados a ser utilizados en conjunto: IIS y JRuby. Lo bueno es que es a la vez JRuby Java y Ruby y se puede usar lo mejor de ambos mundos. Ruby es más productivo y divertido para codificar con, pero Java es mejor para el despliegue (sobre todo cuando hay que hacerlo con IIS). Así que mi consejo sigue siendo. Crear un archivo de la guerra, instalar Tomcat y desplegar el archivo de la guerra allí. Despliegue del archivo de la guerra es tan fácil como copiar en la carpeta de aplicaciones web. Estos son los pasos que debe seguir:

  • Instalar Tomcat
  • Integrar Tomcat con IIS ISAPI mediante el plug-in (puedo ayudar si necesita más información sobre esto)
  • Crea un archivo WAR (IDE Netbeans puede hacer eso por usted)
  • Copia el archivo WAR a la carpeta webapps de Tomcat

Si aún no desea utilizar los archivos WAR tienen un vistazo a este Blog punto . En él se describe cómo puede ejecutar RoR con IIS. Creo que para JRuby el procedimiento sería lo mismo. De todos modos, un enfoque CGI es la única manera si se quiere evitar los archivos WAR.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top