2012-06-07 7 views
9

पर धक्का के दौरान प्रीकंपाइल विफल रहा है मैं वर्तमान में अपने रेल ऐप में परिसंपत्ति_सिंक का उपयोग कर रहा हूं, और मेरे पास मेरे हेरोोक ऐप में पर्यावरण चर सेट हैं। जब मैं Heroku config चलाने मैं:रेक संपत्तियां: हेरोकू

AWS_ACCESS_KEY_ID:  XXXXXXXXXXXXXXXXXX 
AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXX 
FOG_DIRECTORY:   MY-BUCKET-NAME 
FOG_PROVIDER:   AWS 
etc... 

जब मैं Heroku करने के लिए अपने एप्लिकेशन धक्का, यह रेक संपत्ति को चलाने के लिए कोशिश करता है: precompile और मैं निम्नलिखित संदेश मिलता है:

Preparing app for Rails asset pipeline 
Running: rake assets:precompile 
/usr/local/bin/ruby /tmp/build_2pa7aisux9av8/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets 
AssetSync: using /tmp/build_2pa7aisux9av8/config/initializers/asset_sync.rb 
rake aborted! 
Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank 

लेकिन तब मैं चलाएँ:

heroku run rake assets:precompile --app my-app-name 

... और यह S3 के लिए सब कुछ और समन्वयित हो जाता है ठीक संसाधित करता है:

Running `rake assets:precompile` attached to terminal... up, run.1 
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=staging RAILS_GROUPS=assets 
AssetSync: using /app/config/initializers/asset_sync.rb 
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=staging RAILS_GROUPS=assets 
AssetSync: using /app/config/initializers/asset_sync.rb 
AssetSync: Syncing. 
Using: Directory Search of /app/public/assets 
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css 
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css.gz 
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css.gz 
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css 
AssetSync: Done. 

किसी भी विचार से यह पुश के दौरान क्यों काम नहीं करेगा, लेकिन जब मैं उसके अनुसूचित जाति की संपत्ति को चलाता हूं तो यह ठीक काम करेगा: प्रीकंपाइल?

उत्तर

3

मैं देख सकता हूं कि आप संपत्ति चला रहे हैं: --app my-app-name विकल्प के साथ प्रीकंपाइल रेक कार्य। बस सुनिश्चित करने के लिए, क्या आपके पास Heroku पर एकाधिक ऐप्स हैं? (उदाहरण के लिए स्टेजिंग और उत्पादन)। यदि आप सुनिश्चित करते हैं कि heroku कॉन्फ़िगरेशन के साथ आपके आउटपुट में Heroku config --app my-app-name परिणाम चलाना सुनिश्चित करें।

यदि आपके ऊपर उपरोक्त आदेश के साथ अपेक्षित परिणाम हैं, तो वर्र्स गिट पुश पर उपलब्ध नहीं हैं जैसा कि asset_sync_test github readme सुझाया गया है। आपको लगता है कि का उपयोग करके अपने config/environments/*.rb फ़ाइल में निम्न चारों ओर जा सकते हैं:

config.asset_sync.aws_access_key = ENV['AWS_ACCESS_KEY_ID'] 
config.asset_sync.aws_access_secret = ENV['AWS_SECRET_ACCESS_KEY'] 
config.asset_sync.aws_bucket = ENV['FOG_DIRECTORY'] 
config.asset_sync.fog_provider = ENV['FOG_PROVIDER'] 
+2

इस अपरिभाषित विधि के साथ मेरी 3.2.8 अनुप्रयोग में विफल रहा है 'aws_access_key = ' – Dogweather

+0

ही विफल त्रुटि संपत्ति संकलन किया एक बार अब 3.2.8 – twinturbotom

19

मैं हमारे सर्वरों में से एक पर एक ही समस्या थी, जब तक मैं asset_sync GitHub पेज का कहना है कि आप

चलाने की आवश्यकता पर प्रलेखन पाया
heroku labs:enable user-env-compile --app <appname> 

काम करने के लिए।

Heroku भी AssetSync documentation

है यह बहुत ही

+0

इस के लिए अच्छा है मेरे लिए भी काम किया जब मैं ट्रेविस सीआई से हेरोोकू तक सीधे तैनाती करना चाहता था। मैं [i18n-js] (https://github.com/fnando/i18n-js) मणि का उपयोग करता हूं जिसके लिए ** application.rb ** में 'config.assets.initialize_on_precompile = true' की आवश्यकता होती है। इसलिए, इस आदेश ने मुझे तैनाती से पहले संपत्तियों को प्रीकंपाइल करने की अनुमति नहीं दी। मैं वास्तव में हेरोोकू को इस चारों ओर रखने में मदद करता हूं ... –

+1

ऐसा लगता है कि 'हेरोकू लैब्स: उपयोगकर्ता-एनवी-कंपाइल-ए ' सक्षम करें, उपयोगकर्ता_एएनवी_कंपाइल नहीं, FYI। धन्यवाद! – cdmwebs

+4

ध्यान रखें कि 'उपयोगकर्ता-एनवी-संकलन' मार्च 2014 से हीरोोक द्वारा सेवानिवृत्त हो गया है। – wspruijt