Question Où placer Galleria (framework jQuery image gallery) dans Rails 3.1 Asset Pipeline?


Je suis un peu confus quant à où placer un framework jQuery comme Galleria dans Rails 3.1's nouveau Pipeline d'actifs?

Je le sais, techniquement, devrait aller dans /vendors/assets/javascripts  mais, je comprends que, le Galleria dossier avec le jQuery & themes veut être dans la racine (/galleria) du site en direct afin de fonctionner correctement.

Aussi, pendant que nous y sommes, où placer le script suivant, il apparaîtra uniquement sur la ou les pages avec une galerie?

<script>
    $('#gallery').galleria({
        width:500,
        height:500
    });
</script>

modifier: Surpris il n'y a pas de réponse!?! Peut-être que Galleria n'est pas si populaire? Ce sont les fichiers que j'essaye de charger. Ils sont regroupés comme ça bien que je puisse facilement les déplacer:

vendor/
  assets/
    javascripts/
      galleria-1.2.5.js
      galleria-1.2.5.min.js
    galleria/
      themes/
        classic/
          classic-loader.gif
          classic-map.png
          galleria.classic.css
          galleria.classic.js
          galleria.classic.min.js

j'ai pensé Pignons  require_tree . chargerait tout dans app/assets, lib/assets et vendor/assets?!?


12
2017-08-30 18:46


origine


Réponses:


J'ai eu le même problème et il a fallu du temps pour travailler. Au début, cela fonctionnerait bien sur le développement, mais lorsque nous sommes passés à la production, Galleria a échoué silencieusement, à cause des noms de fichiers d'actifs ayant maintenant des "empreintes digitales". Cela semble également être un problème avec les thèmes de l'interface utilisateur jQuery et de nombreux autres scripts de ce type.

Bien sûr, vous pouvez simplement revenir à l’ancienne façon de procéder et tout jeter dans «public», mais nous souhaiterions l’avantage de fusionner automatiquement tous les fichiers css / js et de faire les choses de la manière la plus simple.

Voici comment je l'ai fait fonctionner:

vendor/
  assets/
    images/
      classic-loader.gif
      classic-map.gif
    javascripts/
      galleria-1.2.5.js
      galleria.classic.js
    stylesheets
      galleria.classic.css.scss

Renommer votre galleria.classic.css fichier à galleria.classic.css.scss. Ensuite, remplacez les références d'image, comme ça (j'en avais deux):

url("classic-loader.gif") devient image-url("classic-loader.gif")

UPDATE: On dirait que vous n'avez pas besoin de faire cela dans Rails 3.1.1. Renommez simplement le fichier en .css.scss et rails traitera automatiquement les appels url () pour vous.

Dans ton app/assets/javascripts/application.js fichier, assurez-vous que vous avez les lignes

//= require galleria-1.2.5
//= require galleria.classic
//= require_tree .

En toi app/assets/stylesheets/application.css fichier, assurez-vous que vous avez les lignes

*= require galleria.classic
*= require_tree .

Enfin, Galleria semble avoir intégré un chargement css non standard sophistiqué. C'est ce qui empêchait le chargement de Galleria sur notre site de production. Comme nous avons déjà inclus la feuille de style, nous voulons désactiver ce comportement. Ouvrez simplement galleria.classic.js (ou votre fichier javascript thème Galleria), et remplacez la ligne:

css: 'galleria.classic.css',

avec:

css: false,

Cela indiquera à Galleria de ne pas essayer de charger la feuille de style.

Une dernière chose - en essayant de compiler ces actifs, je suis tombé sur ce qui est apparemment un bug dans Rails 3.1.0. Quand j'ai couru rake assets:precompile, J'ai des erreurs comme:

$ bundle exec rake assets:precompile
rake aborted!
classic-loader.gif isn't precompiled
  (in /vendor/assets/stylesheets/galleria.classic.css.scss)

En bref, vous devez définir cette ligne config/environments/production.rb:

config.assets.compile = true

Cela ne devrait pas être nécessaire une fois que 3.1.1 est libéré.


22
2017-09-20 04:41



J'aime la suggestion d'Arjen, bien que je pense vendor/assets/libs est plus approprié. Voici ma configuration:

Dans config / application.rb

config.assets.enabled = true
config.assets.paths << "#{Rails.root}/vendor/assets/libs"

Dans app / assets / javascripts / application.js

//= require galleria/galleria-1.2.6.min.js

Pour initialiser:

Galleria.loadTheme('assets/galleria/themes/classic/galleria.classic.min.js');
$('#gallery').galleria();

Notez comment le chemin est passé à loadTheme() commence par «actifs».

J'aime cette configuration car elle garde la galleria dossier intact. En outre, il concatène galleria-1.2.6.min.js sur mon fichier js principal (une requête http en moins).


3
2018-03-07 02:19



Je suis également tombé sur ce problème. Diviser une bibliothèque existante pour l'ajuster à la structure actuelle de javascripts / stylesheets est un peu compliqué. Vous pouvez donc ajouter un chemin supplémentaire vers votre fichier application.rb pour charger des ressources, comme ceci:

    # Enable the asset pipeline
    config.assets.enabled = true
    config.assets.paths << "#{Rails.root}/app/assets/libs"

Créez un dossier 'libs' sous app / assets, copiez la bibliothèque galleria dans ce dossier et ajoutez-la à votre fichier de présentation d'application:

    <%= javascript_include_tag 'galleria/galleria-1.2.4.min.js' %>
    <%= javascript_include_tag 'galleria/themes/classic/galleria.classic.min.js' %>

Vous pouvez également regrouper le code galleria en demandant les fichiers js, mais cela dépend de vous.


2
2017-09-11 14:59