pyramid_assetgen είναι μια επέκταση πυραμίδα που σας επιτρέπει να ενσωματώσετε Assetgen με ένα έργο Πυραμίδα.
Συμπεριλάβετε το πακέτο, που ένα εργοστάσιο έθιμο αίτημα (χρησιμοποιώντας AssetGenRequestMixin ως την πρώτη κατηγορία που κληρονομούν από):
κατηγορία MyRequest (AssetGenRequestMixin, Αίτηση): πέρασμα
config.set_request_factory (MyRequest)
config.include («pyramid_assetgen»)
Χρησιμοποιήστε την οδηγία διαμόρφωση add_assetgen_manifest να συνδέσει ένα αρχείο δήλωσης Assetgen με ένα στατικό κατάλογο:
config.add_static_view («στατική», «mypkg: στατική»)
# Προεπιλογές να ψάξουν για ένα αρχείο assets.json στον ίδιο κατάλογο
config.add_assetgen_manifest («mypkg: στατική»)
Και στη συνέχεια, μόλις χρησιμοποιήσετε την ενσωματωμένη request.static_url πυραμίδας (μονοπάτι, ** kW), όπως συνήθως.
Αιτιολογικό
Assetgen είναι ένα στατικό εργαλείο αρχείο κατασκευής. Κατά τη χρήση σε παραγωγή, μπορείτε να ενεργοποιήσετε τη λειτουργία κατακερματισμού του σε αρχεία εξόδου με ένα hash στο όνομα του αρχείου. Αυτό σημαίνει ότι όταν αλλάζετε ένα αρχείο (για παράδειγμα, ίσως ενημέρωση στυλ το site σας), θα αλλάξει όνομα.
Από τη μία πλευρά αυτό είναι εξαιρετική είδηση, καθώς σας επιτρέπει να εφαρμόσουν μια βέλτιστη στρατηγική HTTP caching (λέγοντάς τους πελάτες του προγράμματος περιήγησης για την προσωρινή αποθήκευση στατικά αρχεία σας για πάντα). Από την άλλη, αυτό σημαίνει ότι θα πρέπει να ενημερώσετε τα πρότυπά σας ή / και την προβολή κώδικα για να εξυπηρετήσει τη σωστή διεύθυνση URL για να επιλύει στο όνομα του αρχείου κατακερματισμένη. Αυτό είναι σχετικά εύκολο όταν χρησιμοποιείτε Πυραμίδα όπως είστε ήδη χρησιμοποιώντας μια δυναμική λειτουργία για να δημιουργήσει στατικές URL σας: request.static_url.
Αυτό το πακέτο, pyramid_assetgen επεκτείνει την Πυραμίδα μηχανήματα για την αυτόματη ενημέρωση στατικές διευθύνσεις URL σας, έτσι ώστε να επιλυθούν τα σωστά ονόματα αρχείων κατακερματισμένη. Μπορείτε να το χρησιμοποιήσετε για να ενσωματώσει Assetgen με την αίτησή σας Πυραμίδα χωρίς να χρειάζεται να αλλάξετε κάποια από τα πρότυπά σας ή προβολή κώδικα ή να μάθουν νέα APIs.
Ροή εργασίας
Εάν εκτελέσετε μια εφαρμογή Πυραμίδα ρυθμιστεί να ψάξουν για ένα αρχείο δήλωσης, τότε το αρχείο θα πρέπει να είναι εκεί, διαφορετικά η εφαρμογή θα ρίξει μια εξαίρεση (κατά το χρόνο διαμόρφωσης). Έτσι θα πρέπει να οικοδομήσουμε πρόδηλη αρχείο σας χρησιμοποιώντας κάτι σαν:
assetgen etc / assetgen.yaml --force
Πριν να εκτελέσετε Πυραμίδα app σας με κάτι σαν:
pserve etc / production.ini
Εάν εκτελείται σε λειτουργία ανάπτυξης που χρησιμοποιούν [paste.reloader], για παράδειγμα:
pserve etc / development.ini --reload
Θα μπορούσατε να προσθέσετε αρχείο δήλωσης σας στη λίστα των αρχείων επαναφορτιστή πρέπει να προσέξετε τη χρήση, π.χ.
από paste.reloader add_file_callback εισαγωγής
watch_manifest_files def ():
& Nbsp? Επιστρέψει [«/var/www/static/assets.json»,]
add_file_callback (watch_manifest_files)
Ωστόσο, είναι απίθανο να χρειαστεί αυτό, καθώς δεν θα πρέπει να auto-reload στην παραγωγή και στη λειτουργία της ανάπτυξης δεν θα πρέπει να hash αρχεία assetgen σας.
Διαμόρφωση
Αν υποθέσουμε config είναι ένα παράδειγμα pyramid.config.Configurator, (ίσως διαθέσιμο σε κύριες / WSGI λειτουργία του εργοστασίου app σας), μπορούμε να προσθέσουμε την οδηγία είτε με τη χρήση:
από pyramid_assetgen add_assetgen_manifest εισαγωγής
config.add_directive («add_assetgen_manifest», add_assetgen_manifest)
Ή πιο απλά:
config.include («pyramid_assetgen»)
Επιπλέον, θα πρέπει να επεκταθεί η προεπιλεγμένη εργοστασιακή αίτημα χρησιμοποιώντας, για παράδειγμα:
από pyramid.request Αίτηση εισαγωγής
από pyramid_assetgen AssetGenRequestMixin εισαγωγής
κατηγορία MyRequest (AssetGenRequestMixin, Αίτηση):
& Nbsp? Πέρασμα
config.set_request_factory (MyRequest)
(Σημειώστε ότι το επιχείρημα AssetGenRequestMixin πρέπει να έρθει πριν από το αίτημα στον ορισμό αίτημα τάξη εργοστάσιο σας. Διαφορετικά, η μέθοδος static_url δεν θα πρέπει να αγνοηθεί).
Χρήση
Με την εν λόγω ρύθμιση, όταν εκθέτετε σε στατικό κατάλογο χρησιμοποιώντας config.add_static_view, τώρα μπορείτε να συσχετίσετε μια πρόδηλη Assetgen με αυτό:
config.add_static_view («στατική», «mypkg: στατική»)
config.add_assetgen_manifest («mypkg: στατική»)
Αυτό θα ψάξουν για ένα αρχείο δήλωσης σε mypkg: στατικές / assets.json. Αν το αρχείο είναι κάπου αλλού χρήση:
config.add_assetgen_manifest («mypkg: στατική», δηλωτικό = "/ foo / bar.json»)
Στη συνέχεια μπορείτε να χρησιμοποιήσετε request.static_path και request.static_url κανονικά. Έτσι, για παράδειγμα, εάν έχετε εγγραφεί σε πρόδηλη περιέχει:
{«Foo.js»: «foo-fdsf465ds4f567ds4ds5674567f4s7.js»}
Κλήση:
request.static_path («mypkg: στατική / foo.js»)
Θα επιστρέψει:
«/static/foo-fdsf465ds4f567ds4ds5674567f4s7.js»
Δοκιμές
Έχω τρέξει τις δοκιμές υπό Python2.6 και Python3.2 χρησιμοποιώντας, για παράδειγμα:
$ ../bin/nosetests --cover-Πακέτο = src / pyramid_assetgen --cover-διαγραφής --with κάλυψη --with-doctest
.......
Όνομα Stmts Μις Εξώφυλλο Missing
-------------------------------------------------- -----------------
src / pyramid_assetgen / __ init__ 59 0 100%
src / pyramid_assetgen / δοκιμές / __ init__ 58 0 100%
-------------------------------------------------- -----------------
ΣΥΝΟΛΟ 117 0 100%
-------------------------------------------------- --------------------
Ran 7 δοκιμές σε 0.552s
OK
Απαιτήσεις :
- Python
- πυραμίδα
Τα σχόλια δεν βρέθηκε