2012-07-16 11 views
15

मैं Dojo ToolkitMeteor के साथ उपयोग करना चाहता हूं।उल्का को फ़ाइलों को देखने से कैसे रोकें?

  1. मैं पहली बार /public

  2. तब में पूरे डोजो टूलकिट पेड़ नकल, मैं इसे ग्राहक के पक्ष में शामिल हैं के साथ:

    <script src="/dojo/dojo.js" data-dojo-config="async: true"></script>` 
    

सब कुछ ठीक काम करता है, को छोड़कर उल्का है वास्तव में परिवर्तनों के लिए /public में प्रत्येक फ़ाइल की निगरानी, ​​ताकि यह सर्वर को पुनरारंभ कर सके। यह वास्तव में localhost:3000 पर पहले अनुरोध के दौरान बहुत देर हो चुकी है।

क्या उल्का को किसी निश्चित निर्देशिका से फ़ाइलों को देखने से रोकने का कोई तरीका है?


डोजो टूलकिट 10k + फ़ाइलें तो मैं EMFILE त्रुटि here कहा गया है,

sudo sh -c 'echo 16384 > /proc/sys/fs/inotify/max_user_watches' 
+7

मुझे अंत में एक कामकाज मिला। मैं सब कुछ/public/lib/में डाल रहा हूं। फिर, /usr/lib/meteor/app/run.js की लाइन 286, मैं फ़ोल्डर मैं उल्का को देखने के लिए नहीं करना चाहती जोड़ रहा: 'self.exclude_paths = [ path.join (app_dir, '.meteor', 'local'), path.join (app_dir, 'public', 'lib') ]; ' इस तरह से मुझे lib में जितनी चाहें उतनी फाइलें मिल सकती हैं, और वे सब कुछ धीमा नहीं करते हैं। पथ शामिल है '/lib/dojo/dojo.js'। – Mathieu

+0

अच्छा फिक्स, आपको उन्हें एक पैच भेजना चाहिए और इसे – Milimetric

+0

के नीचे एक उत्तर के रूप में पोस्ट करना चाहिए। इस उद्देश्य के लिए कामकाज @ मैथ्यूयू सुझावों को ठीक काम करना चाहिए, लेकिन उल्का को इस तरह कुछ समर्थन देना चाहिए। इसे गिटहब इश्यू के रूप में भी दायर किया जाता है, जो इस मामले पर चर्चा जारी रखने के लिए उचित जगह है, या इसके संकल्प को ट्रैक करने के लिए उपयुक्त जगह है। https://github.com/meteor/meteor/issues/437 – avital

उत्तर

2

यह बड़े पैमाने पर उल्का में बनाया अनुप्रयोगों के लिए एक बड़ा मुद्दा है के साथ ठीक हो जाता है। मैंने मेटियर में मैट ओवर से बात की, और उन्होंने कहा कि उनकी टीम अपनी आगामी रिलीज में से किसी एक के लिए इस समस्या के समाधान पर काम कर रही है। तो अपने न्यूजलेटर पर जाएं, और जब यह उपलब्ध हो तो आपको अधिसूचित किया जाएगा।

मैथ्यु, अपनी टिप्पणी:

मैं अंत में एक समाधान मिल गया। मैं सब कुछ/public/lib/में डाल रहा हूँ। फिर, /usr/lib/meteor/app/run.js की लाइन 286, मैं उस फ़ोल्डर को जोड़ रहा हूं जिसे मैं नहीं देखना चाहता हूं उल्का: self.exclude_paths = [path.join (app_dir, '.meteor', ' स्थानीय '), path.join (app_dir,' public ',' lib ')]; इस तरह से मुझे lib में जितनी चाहें उतनी फाइलें मिल सकती हैं, और वे सब कुछ धीमा नहीं करते हैं। पथ शामिल है '/lib/dojo/dojo.js'।

अब के लिए एक अच्छा हैक है, और यहाँ अन्य मुद्दों है कि संबंधित है कि यह भी आगामी रिलीज में शामिल किया जाएगा रहे हैं:

  • कुछ संकुल अतिव्यापी निर्भरता है, लेकिन उनकी तरह बाहर न निकाल दे PHP की requ_once() में।

  • एक देशी की आवश्यकता होती है/गतिशील स्क्रिप्ट लोडर, इसलिए सभी फाइलों प्रविष्टि एक है कि स्तर, lib या मुख्य जाए बिना निर्भरता क्रम गणना कर सकते हैं पर लोड किए गए हैं परिभाषित करते हैं। *

  • बनाने के लिए एक अधिकारी ने जिस तरह से और एक भंडार में पैकेज तैनात करें। वर्तमान में यह Meteorite (एमआरटी) और Atmosphere का उपयोग कर रहा है।

+0

लक्ष्य उल्का सेवा है लेकिन लक्ष्य है किसी निर्देशिका में संपत्ति फ़ाइलों को न देखें, अधिमानतः मेरे पास सार्वजनिक रूप से सभी बड़ी वीडियो फ़ाइलें हैं। क्या आपकी बहिष्कार_पैथ लाइन फाइलों की सेवा जारी रखती है? –

3

महसूस किया कि यह करने के लिए नकल की है: generating and serving static files with Meteor

देखें: https://github.com/meteor/meteor/issues/437

यह मेरे लिए एक बड़ी समस्या थी। मुझे ~ 12000 स्थैतिक छवियों की सेवा करनी है, जिसे मैंने शुरू में सार्वजनिक फ़ोल्डर में रखा था। इसने नोड को लगातार एक सीपीयू कोर का लगभग 100% उपयोग करने का कारण बना दिया। सीमित स्मृति के साथ ऐप दुर्घटनाग्रस्त हो जाता है।

वैकल्पिक हल मैं पल

  • के लिए उपयोग कर रहा हूँ फ़ोल्डर public/.#static/ बना सकते हैं और इसे में सभी स्थैतिक संपत्ति चलते हैं। इस फ़ोल्डर में उल्का ने देखा नहीं है स्थिर (/img/cat.png -> /static/img/cat.png)
  • साथ

  • उपसर्ग यूआरएल माइम NPM पैकेज

    cd ~/.meteor/tools/latest/lib/node_modules/ 
    npm install mime 
    
  • स्थापित एक rawConnectionHandler (क्रेडिट: https://stackoverflow.com/a/20358612) बनाने के संपत्ति की सेवा के लिए सर्वर /static_files_handler.coffee

    fs = Npm.require('fs') 
    mime = Npm.require('mime') 
    WebApp.rawConnectHandlers.use (req, res, next) -> 
        re = /^\/static\/(.*)$/.exec(req.url) 
        if re isnt null # Only handle URLs that start with /static/* 
        filePath = process.env.PWD + "/public/.#static/" + re[1] 
        type = mime.lookup(filePath) 
        data = fs.readFileSync(filePath, data) 
        res.writeHead 200, 
         "Content-Type": type 
    
        res.write data 
        res.end() 
        else # Other urls will have default behaviors 
        next() 
        return 
    

इस दृष्टिकोण की सीमाएं:

  • क्वेरी पैरामीटर के साथ संपत्तियों की सेवा के लिए उपयुक्त नहीं है। Regex पैरामीटर सहित फ़ाइल नाम के साथ फ़ाइल की सेवा करने की कोशिश कर रहा /static/html/image.html?src=/static/img/cat.png से मेल खाता है। यह बदलना आसान है।
  • उल्का पूरी तरह से फाइलों से अनजान है, इसलिए वे एपैच मैनिफेस्ट में शामिल नहीं होते हैं। आप उन्हें ऑफ़लाइन उपलब्ध कराने में, addPaths विकल्प मैं https://github.com/buildhybrid/appcache-extra

को जोड़ा की जाँच आप, समस्याओं को हल करने के लिए एक बाहरी सेवा से परिसंपत्तियों की सेवा पर विचार करने नहीं करना चाहते हैं चाहते हैं (उदा। एडब्ल्यूएस S3) ।

+0

यदि आप जायेंगे और इस एप को * .meter.com पर तैनात करेंगे - इससे त्रुटि होगी - मेटायर की वजह से यह अनदेखा करता है (और वास्तव में नहीं)। # स्थिर निर्देशिका –

संबंधित मुद्दे