2011-06-15 22 views
50

Tengo una aplicación node.js escrita en CoffeeScript.¿Puedo ejecutar coffeescript en Heroku?

Me pregunto qué se necesita para alojar la aplicación en Heroku.

Gracias

+1

Por lo que sé, heroku solo aloja aplicaciones ruby. – Ikke

+4

También alberga node.js. – donald

+0

Lo agregaron recientemente. Tenga en cuenta que si desea ejecutar CoffeeScript en una aplicación de Rails en Heroku, simplemente agregue el último 'therubyracer' a su Gemfile y debería estar configurado. –

Respuesta

1

Debido a las actualizaciones con Heroku, ahora permite una instalación npm de la fuente coffee-script. La respuesta a continuación fue una solución temporal antes de que Heroku totalmente compatible con node.js. Para una mejor solución actualmente, vea la respuesta mejor calificada que explica cómo simplemente usar coffee-script desde npm en Heroku.


Para ser sincero, la mejor manera sería compilarlo antes de la mano usando coffee -c filename como Pedro sugirió, pero me pregunto si usted podría tener una especie de 'precarga' preload.js que llamará a los scripts usando coffeescript como node_module luego compila() el script que se usará. De esta forma, puedes utilizarlos de forma nativa en el nodo en heroku sin tener que lidiar con archivos extra en tu repositorio.

npm install coffee-script 

Luego, en la aplicación inicial, escribirlo en javascript y llamar a los archivos *.coffee usando la función de compilación de café:

var coffee = require('coffee-script'); 
coffee.compile('./server.coffee'); 
// could be coffee.run(file) instead, not sure 

y en yourapp.coffee tratar

console.log 'It worked!' 

No estoy seguro si esto funcionaría, o si esa es incluso la sintaxis adecuada para esa función. https://github.com/jashkenas/coffee-script/blob/master/lib/coffee-script.js#L24

Si preguntas acerca de hacerlo en rubí, aquí es esto:

Tutorial sobre el uso de CoffeeScript en los carriles en Heroku: http://drnicwilliams.com/2010/03/15/using-coffeescript-in-rails-and-even-on-heroku/

Se sugiere el uso de bistro_car (https://github.com/jnicklas/bistro_car)

gem install bistro_car 
mkdir -p app/scripts 

y agregarlo a sus rieles conf/environment.rb

config.gem 'bistro_car' 

Si encuentro otra cosa u otra forma de ejecutar nativamente *.coffee aplicaciones de JavaScript, actualizaré esta respuesta, pero espero que esto le dará una idea de cómo hacer que funcione.

Éstos son un par de ejemplos, pero todos ellos parecen estar usando rubí vs Node.js así:

http://forrst.com/posts/Doing_CoffeeScript_on_Heroku_a_Ruby_gem-OBk http: //www.tangiblecolors.com/first-steps-with-coffeescript-and-how-to-use

Espero que esto ayude un poco.

+0

Creo que Slick está en el camino correcto. No necesitas ningún binario para ejecutar '.archivos de café; solo necesitas la librería 'coffee-script', que es JS pura. De hecho, el binario 'coffee' se implementa como JS puro (se ajusta al' command.js' de CoffeeScript). –

+0

En cuanto a algunos de los detalles de la publicación: Deberías usar 'coffee.run'; 'coffee.compile' solo te da la salida JS como una cadena. La publicación del Dr. Nic sobre el uso de CoffeeScript on Rails con Heroku está desactualizada; debe usar Rails 3.1 o [Barista] (https://github.com/sutto/barista), no bistro_car (que no se ha actualizado en más de un año y, entre otras cosas, no es compatible con Rails 3)) –

+0

Acabo de hacer una muestra de esto: https://github.com/lfreneda/how-to-coffeescript-on-heroku –

0

Busqué en Google, pero parece no estar claro. Aquí está la guía heroku, que no menciona coffeescript. http://devcenter.heroku.com/articles/node-js

Creo que sólo puede ejecutar coffee -c . en sus app`s git repo antes de comprometerse y empujar a heroku (guión esto como parte de la secuencia de comandos de despliegue), y luego sólo tiene que utilizar el código js compilado por ese proceso.

9

que fue capaz de llevarse bien con sólo incluyendo CoffeeScript en mis dependencias y luego poner 'index.coffee café' en mi Procfile

Hay un costo inicial de compilar cada vez que arranca el servidor, pero aparte de eso deberías estar bien.

2

Lo tengo trabajo mediante la inclusión de coffeescript en mi package.json y añadiendo node_modules/coffeescript/bin a mi camino Heroku

118

Michael Blume es correcto y que no es necesario ningún código adicional para funcionar Aplicaciones de nodo CoffeeScript en heroku. Así es como lo hice:

Agregue el coffee-script en la versión actual a sus dependencias en package.json. Esto podría ser algo como esto:

{ 
    "name": "My-CoffeeScript-App-on-Heroku", 
    "version": "0.0.1", 
    "dependencies": { 
    "coffee-script": "1.1.2" 
    } 
} 

A continuación, modifique la entrada para su aplicación en el nodo Procfile utilizar café en lugar de nodo. Para una aplicación con sólo una única entrada Web esto podría tener este aspecto

web: coffee app.coffee 

Para probar si esto funcionará en Heroku, se puede probar en el servidor local usando la gema capataz:

$ gem install foreman 
$ foreman start 
21:13:36 web.1  | started with pid 4711 

A continuación, intente un empuje para heroku y verá algo como esto en la instalación de dependencia:

-----> Installing dependencies with npm 1.0.8 
     [email protected] ./node_modules/coffee-script 
     [email protected] ./node_modules/jade 
     ├── [email protected] 
     └── [email protected] 

No estoy seguro si hay problemas con este procedimiento, pero el método descrito anteriormente parece un exceso para mí ya que estás estropeando tu código para el entorno de tiempo de ejecución.

Espero que esto ayude a alguien :)

+9

Esta debería ser la respuesta aceptada. – kynan

+11

CoffeeScript no está instalado en todo el mundo, por lo tanto, debe usarlo instalado localmente. Actualice su 'Procfile' como:' web: node_modules/coffee-script/bin/coffee app.coffee' –

+0

Además, asegúrese de que su aplicación use process.env.PORT para la configuración ... –

0

Ha habido un custom buildpack existido desde hace bastante tiempo ahora, por Chris Fung. Lo he usado durante un par de años, hasta hace poco, cuando dejó de funcionar con el nuevo Cedar-14 Stack en Heroku. Entonces, modifiqué el buildpack de Chris y ahora puedes usar este new custom buildpack para ejecutar aplicaciones coffeescript en Heroku.

Cuestiones relacionadas