2012-01-04 17 views
36

En el momento en que genero un nuevo controlador, Rails también genera un archivo .js.coffee para el controlador. Como no uso CoffeeScript, quiero que Rails genere archivos .js para mí.¿Cómo puedo desactivar completamente CoffeeScript en una aplicación Rails 3.1?

¿Es suficiente comentar la gema coffee-rails para deshabilitar completamente CofeeScript en una aplicación Rails 3.1?

+0

Puede obtener una lista de todos los archivos coffeescript con 'find. -iname '* .coffee''. – Kris

Respuesta

57
  1. comentario a cabo gem "coffee-script" en sus Gemfile
  2. Use Js en lugar de .js.coffee para sus archivos javascript
+2

¿Está esto documentado en alguna parte que comentar la gema 'coffee-script' es suficiente? –

+4

¿Por qué no lo pruebas? –

+1

No tengo esa línea en mi Gemfile, pero igual necesitaba instalar un motor JS en producción para compilar activos (usando Capistrano con la línea 'load 'deploy/assets''). Algo molesto –

-4

que tenían este problema, ya que estoy usando codekit a compilar mi CoffeeScript.

Lo solucioné cambiando el nombre de mi carpeta 'assets/coffee' a 'assets/cafe', por lo que rail no lo encontraría.

Editar: Lo que funciona (y lo ÚNICO que funciona para mí, la respuesta anterior no funciona) es agregar una carpeta 'Aplicación/Café', y configurarla para ser compilada en la carpeta assets/javascript . Si está en el directorio de activos, los rieles lo encontrarán sin importar el nombre.

+2

Maldición, rayad que después de reiniciar los rieles se encuentra assets/cafe y está intentando compilarlo de nuevo. – Kevin

-1

Nota para Rails 4, o si está utilizando 'turbolinks', 'uglifier' o cualquier otro tipo de gema que requiera que el servidor interprete javascript, coméntelos también.

+6

Aún puede querer turbolinks o uglifier, incluso si aún no está utilizando CoffeeScript en su propio código fuente. –

27

No estoy seguro si esto cuenta para Rails 3.1 pero en 4 también se debe establecer el javascript_engine-:js en application.rb para instruir a los generadores para crear archivos en lugar de .js.js.coffee.

config.generators do |g| 
    # .. other configuration .. 
    g.javascript_engine :js 
end 
+6

También puede hacer esto en una línea: 'config.generators.javascript_engine: js' – dotdotdotPaul

+3

Esto ya no parece ser necesario en Rails 4.1. Simplemente basta con eliminar los "cafés de gema" del Gemfile. – CodeSmith

+2

Todavía es necesario, incluso en Rails 4.1, si tiene una dependencia transitiva en los rieles de café como activeadmin –

1

Koen y Gaurav Gupta tienen buenas respuestas!

Si desea realizar estos cambios automáticamente para cada nuevo proyecto de Rails, puede usar un archivo de plantilla.

En ~/rails-template.rb

# Don't install coffeescript 
gsub_file 'Gemfile', /^gem \'coffee-rails\'/ do 
    "\# gem 'coffee-rails'" 
end 

# Mess with generators to get the behavior we expect around new files 
# For these injections, indentation matters! 
inject_into_file 'config/application.rb', after: "class Application < Rails::Application\n" do 
    <<-'RUBY' 
    config.generators do |g| 
     # Always use .js files, never .coffee 
     g.javascript_engine :js 
    end 
    RUBY 
end 

Luego, en ~/.railsrc

-m ~/.rails-template.rb 

Ahora cada vez que ejecute rails new, la gema CoffeeScript será comentada, y los nuevos controladores utilizará .js en lugar de .coffee.

Probado en Rails 5.0.4, pero creo que debería funcionar también para versiones anteriores.


Como acotación al margen, Rails templates y generators in general, son súper poderoso. Soy docente y mis alumnos generalmente crearán de 15 a 20 proyectos de rieles a lo largo del curso, y proporcionarles un buen archivo de plantilla con gemas de depuración, pruebas de estilo de especificaciones, etc. es una gran inversión de tiempo. Después de haber hecho los cambios una vez ellos mismos, por supuesto. Si está interesado, mi .rails-template.rb personal es on GitHub.

Cuestiones relacionadas