2013-04-16 40 views
1

唉,我得到了同樣的錯誤這裏.... rails assets:precompile during slug for s3 error: Fog provider and directory can't be blank when env are set的解決方案是不工作...霧提供商不能爲空 - 霧AWS-asset_sync

當我嘗試預編譯資產,我得到以下錯誤:

$ RAILS_ENV=production bundle exec rake assets:precompile 
/Users/me/.rvm/rubies/ruby-1.9.3-p362/bin/ruby /Users/me/.rvm/gems/[email protected]/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
AssetSync: using default configuration from built-in initializer 
AssetSync: using default configuration from built-in initializer 
rake aborted! 
Fog provider can't be blank 
/Users/me/.rvm/gems/ruby-1.9.3-p362/gems/asset_sync-0.5.4/lib/asset_sync/asset_sync.rb:32:in `sync' 
/Users/me/.rvm/gems/ruby-1.9.3-p362/gems/asset_sync-0.5.4/lib/tasks/asset_sync.rake:3:in `block in 

當我鍵入Heroku的實驗室:列表...它表明用戶ENV編譯啓用

[+] user-env-compile  Add user config vars to the environment during slug compilation 

當我鍵入Heroku的配置...我可以看到霧變量是s etup

AWS_ACCESS_KEY_ID:   myid 
AWS_SECRET_ACCESS_KEY:  mykey 
FOG_DIRECTORY:    mydirectory 
FOG_PROVIDER:     AWS 

爲什麼會預編譯的一些文件,但後來放棄了錯誤?

回答

3

你在你的本地機器上運行它? 您無法從本地機器訪問Heroku的環境變量。

您應該將變量添加到您的bash_profile中,或者嘗試類似direnv。如果您正在開發pow,您的最佳選擇是.powenv

export AWS_ACCESS_KEY_ID="myid" 
export AWS_SECRET_ACCESS_KEY="mykey" 
export FOG_DIRECTORY="mydirectory" 
export FOG_PROVIDER="AWS" 
+0

是。這解決了它。雖然我認爲這是一個討厭的修補程序,因爲它違反了DRY – CJBrew

+1

不一定。如果您正在本地機器上運行,那麼您可能正在開發,這將保證單獨的S3存儲桶以及不同的配置。 我承認如果你想在開發中訪問生產資產,那就是重複了,但不管怎樣。這是幾行配置代碼,以防止您獲得1337hax'd。 –

+0

是的,經過進一步的審查...我同意,這不是很糟糕。你當然不希望這些東西在GitHub的配置文件中。此外,它的工作正常,並且由於我發現整個設置與rails開發和Heroku有點搖擺不定,這是一件好事。 儘管我確實知道有一天我會在一個地方改變AWS或FOG參數,而忘記另一個地方,然後什麼都不會起作用,並且我需要6個小時才能再次找出這些東西:) – CJBrew