2013-06-05 3 views
1

J'utilise la gemme rack-coffee pour compiler mes scripts-café. Je veux aussi utiliser jquery.js. Je les ai mis dans le même dossier, mais ça ne marche pas. Rack-coffee compile également jquery.js et le compilateur génère une erreur. Comment puis-je utiliser ces deux types de fichiers dans le même dossier.Comment servir les fichiers statiques avec rack-coffee

use Rack::Coffee, 
    :root => File.join(Dir.pwd, 'assets'), 
    :urls => '/javascripts' 
+0

la nouvelle version rack-café supprimer: options statiques – MarioDu

Répondre

0

Le porte-café README décrit une façon de le faire:

Si vous voulez servir javascript stock fichiers du même répertoire que vos fichiers CoffeeScript, coller un rack :: File dans votre pile middleware après Rack :: Coffee.

Bien que Rack::File ne semble pas être un middleware mais une classe d'application Rack autonome, donc j'utiliser à la place Rack::Static avant votre code ci-dessus:

use Rack::Static, 
    :root => File.join(Dir.pwd, 'assets'), 
    :urls => ["/javascripts"] 
use Rack::Coffee, 
    :root => File.join(Dir.pwd, 'assets'), 
    :urls => '/javascripts' 
+0

Je pense que vous devriez mettre Rack :: Static après Rack :: Coffee? – MarioDu

+0

Je sais que le commentaire dans le fichier README disait cela, mais je ne comprenais pas comment cela fonctionnerait et je pense que le commentaire est erroné. Dans un middleware Rack, le premier middleware à recevoir la requête peut agir comme il le souhaite, donc dans ce cas, il semble que Static devrait d'abord vérifier si le fichier '.js' demandé est disponible en tant que fichier" statique ", le retourner Si c'est le cas, ou continuez sur Rack :: Coffee pour voir si un fichier '.coffee' équivalent est trouvé. Donc je pense que l'ordre est correct, non? –

+0

mais je l'écris après Rack :: Coffee, ça marche. Sinon ça ne marche pas – MarioDu

0

Comme alternative, j'ai récemment wrote a gem that utilises the CDN's for jQuery. Si vous ajoutez cela à la pile middleware, vous n'aurez pas besoin d'y penser.

require 'rack/jquery' 

use Rack::Coffee, 
    :root => File.join(Dir.pwd, 'assets'), 
    :urls => '/javascripts' 

use Rack::JQuery # This can go before or after Rack::Coffee, it doesn't matter. 

# add this to your layout's head section: 
= Rack::JQuery.cdn env 

et la page va maintenant utiliser Google CDN jQuery (voir http://jquery.com/download/ pour plus de détails de CDN) et un script de secours est livré avec la bibliothèque.

+0

Laisse-moi essayer plus tard – MarioDu

Questions connexes