Rails – Entendiendo application.js y application.css

Nuevo en Rails. Solo trato de entender estos dos archivos en el directorio \ assests.

Por ejemplo, el archivo application.js tiene líneas como:

//= require jquery //= require jquery_ujs //= require_tree . 

Entiendo el require_tree . simplemente agrega todos los archivos JS en el directorio actual. Y por contexto, puedo decir que require jquery agrega las bibliotecas jQuery. ¿Pero de dónde sacan estas bibliotecas de jQuery? ¿No veo ningún archivo jquery.js en mi carpeta de activos, o en mi aplicación completa directamente?

Del mismo modo, estoy siguiendo algunas instrucciones para instalar el progtwig de arranque de Twitter ( http://rubydoc.info/gems/bootstrap-sass-rails/2.3.2.0/frames ). Después de agregar mis gems al Gemfile, necesito agregar //= require bootstrap al archivo application.js, y @import 'bootstrap' a mi application.css y ahora mágicamente funciona. ¿¡Por qué!? No puedo encontrar estos archivos en cualquier lugar

¡Gracias!

Para entenderlo, debe mirar Sprockets , que se utiliza para comstackr y servir activos web.

Puedes encontrar estos archivos usando gem which . Aquí hay un ejemplo con bootstrap-sass :

 ~ gem which bootstrap-sass /Users/andr/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/bootstrap-sass-2.3.0.1/lib/bootstrap-sass.rb 

La explicación de @import 'bootstrap' : https://github.com/thomas-mcdonald/bootstrap-sass#css y hay un problema abierto con los comentarios.

application.css y application.js no son archivos css y js normales (podrían serlo, pero tienen un propósito diferente)

ambos son archivos de manifiesto que indican la canalización de activos junto con los piñones para js

así que, como lo señala correctamente la respuesta de Michael Durrant, http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives será el lugar correcto

Pero según tus otras preguntas, parece que te estás perdiendo una pieza bastante crítica del rompecabezas.

Rieles trabaja principalmente con gems. Las gems son piezas de código ruby ​​que puedes agregar para agregarlas a tu aplicación de Rails a través del agrupador

cuando agrega una gem como la gem bootstrap, se instala (de manera predeterminada en la biblioteca de gems donde tiene instalado Ruby, algo como Ruby193 \ lib \ ruby ​​\ gems \ 1.9.1 \ gems)

Si va allí y busca la gem bootstrap, encontrará los archivos css y js que se incluyen en la aplicación, y también los jquery y jquery_ujs que incluye en el archivo de manifiesto.

Dado que las gems se instalan junto a los Rails, a los Rails no les importa dónde están los archivos (siempre que se sepa dónde están).

Así que el archivo de manifiesto dice a los Rails “Oye, incluye estos archivos para mí, en este orden específico” Es por eso que puedes incluir los archivos que escribiste que están en la carpeta de activos y los archivos están incluidos en una gem.

Si no incluye los archivos en el manifiesto, pero sigue instalando la gem que equivale a escribir un archivo css o js, ​​colóquelo en alguna carpeta y no le diga a Rails que existe. Cuando le diga a Rails dónde está, a través del archivo de manifiesto, lo incluirá en el proceso de comstackción de activos y podrá acceder a él con regularidad.

Alternativamente, no tiene que usar el flujo de activos para los activos

puede incluir archivos css y js con un archivo regular

   

y simplemente aloje sus archivos en algún lugar y apúntelos a los archivos, pero el flujo de activos tiene muchas ventajas y realmente le hace la vida más fácil cuando llega a conocerlo.

Creo que los obtiene de las gems que están instaladas en su sistema e incluidas en este proyecto a través de su Gemfile.

Puedes aprender en http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives

¡Es Rails mágicos! Así que no, no puedes ver los archivos dentro de tu propio directorio de proyectos. Si realmente tienes curiosidad, puedes consultar el código de la gem en la página de github de la gem https://github.com/twbs/bootstrap

Además, si realmente desea cambiar algo en la gem, puede incluir el código en su propio github, cambiar las cosas en su sucursal local y luego especificar su propio github como la fuente de la gem en su archivo gem, como …

gem ‘twitter-bootstrap’,: git => ‘git@github.com: my_github / twitter_bootstrap.git’

Pero, es posible que no quieras probar eso si eres realmente nuevo en los Rails;)