Nuevo en Rails, así que tenga paciencia conmigo... Estaba mirando un archivo de manifiesto (application.js) hoy mientras investigaba la canalización de activos y tenía curiosidad por saber cómo se leen las directivas como //= require jquery . ¿Es esto algo que Sprockets está haciendo en segundo plano? ¿Cómo? ¿Por qué se debe comentar primero la directiva y agregar el signo igual? Si elimino los comentarios de las directivas y cargo el archivo application.js en mi navegador, ya no veo el contenido de la biblioteca jquery. Es curioso cómo funciona esto en segundo plano.
Además, cuando agrego mi propia hoja de estilo css personalizada, ¿agrego una directiva requerida en el archivo de manifiesto application.css, o agrego el enlace de la hoja de estilo como <link rel="stylesheet" type="text/css" href="mystyle.css"> ? O hago los dos? Supongo que no debería agregar css directamente dentro del archivo de manifiesto...
¡Gracias!
No sé cuánto sabes, así que trataré de explicarlo en detalle.
Rails almacena nuestros activos (como imágenes, css, archivos js) en lugares separados, por lo que todo está en orden y es mejor para nosotros, los desarrolladores, usarlo. Así que eso se llama Pipeline Assed. Cuando Rails carga esos activos, por ejemplo, archivos css, crea un archivo grande a partir de todos los archivos de nuestra aplicación, para evitar múltiples llamadas. Y Manifest es como un mapa o reglas para Rails sobre qué archivos incluir en ese gran archivo css y este *= es lo que le dice a Rails qué incluir exactamente (lo considero como una sintaxis de Rails). Así que cuando tienes algo como esto:
//= require jquery //= require jquery_ujs //= require turbolinks //= require_tree . require_tree . le dice a Rails que tome todos los archivos de la carpeta de javascripts, mientras que //= require jquery y otros dirige a Rails a casos especiales : activos, generalmente utilizados por sus gemas (esos archivos que nunca guarda en sus carpetas de javascripts/stylesheets, así que //= require_tree . no puedo verlos).
Cuando agrega su archivo on css, simplemente lo agrega a la carpeta de hojas de estilo y require_tree le informa a Rails que lo incluya en el panorama general. Pero Rails tiene una buena característica: andamios. Usted construye su objeto con rails g scaffold User and Rails crea todo para usted: vistas, controlador, modelo, pruebas (y quién sabe qué más :)). Entonces, en este caso, ni siquiera necesita crear su archivo css, simplemente inserte reglas css en él y Rails lo encontrará debido a require_tree .
Una historia un poco diferente con los archivos sass:
Si desea usar varios archivos Sass, generalmente debe usar la regla Sass @import en lugar de estas directivas Sprockets. Cuando se usan las directivas de Sprockets, los archivos Sass existen dentro de su propio alcance, lo que hace que las variables o los mixins solo estén disponibles dentro del documento en el que se definieron.
Entonces, si va a usar Bootstrap (probablemente lo hará), también es importante saberlo.
Espero que esto ayude
¿Cómo? ¿Por qué la directiva debe ser comentada primero?
Porque esta es la directiva de ruedas dentadas. Se ejecuta mucho antes de que cualquier js/coffee en ese archivo tenga la oportunidad de ejecutarse. Y css no es código "ejecutable" en absoluto. ¿Cómo haces para que este tipo de código no produzca ningún error? lo comentas tu.
... y el signo igual añadido?
Para diferenciar estas directivas especiales de otros comentarios "normales", que pueden estar en ese archivo.
Supongo que no debería agregar css directamente dentro del archivo de manifiesto...
Por qué no, adelante. Aunque es posible que desee colocar cualquier código personalizado en archivos separados por razones de organización del código. Pero técnicamente, no hay problema aquí.
Además, cuando agrego mi propia hoja de estilo css personalizada, ¿agrego una directiva require en el archivo de manifiesto application.css?
No es necesario, require_tree . encontrará e incluirá su archivo.
o agrego el enlace de la hoja de estilo como
<link rel="stylesheet"type="text/css" href="mystyle.css">?
No, no hagas eso.