2012-06-07 140 views
9

我目前在我的Rails应用程序中使用asset_sync,并且在我的Heroku应用程序中设置了环境变量。当我运行的Heroku的配置,我得到:rake资产:在推送到Heroku期间预编译失败

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

当我把我的应用程序的Heroku,它试图运行耙资产:预编译,我得到以下信息:

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. 

任何想法,为什么它不会在推,但它会工作正常,当我heroku运行耙资产:预编译?

回答

3

我可以看到你正在运行资产:预编译rake任务与--app my-app-name选项。可以肯定的是,你有多个应用程序Heroku? (例如舞台和制作)。如果确实要确保在heroku配置下运行heroku config --app my-app-name的结果。

如果您使用上述命令获得了预期的结果,则可能在git push上没有提供ENV变量,如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

这当我想要从Travis CI直接部署到Heroku时,也为我工作。我在** application.rb **中使用需要'config.assets.initialize_on_precompile = true'的[i18n-js](https://github.com/fnando/i18n-js)gem。所以,这个命令让我在部署之前根本不需要预编译资源。我真的帮Heroku保持这个... –

+1

它似乎被称为'heroku实验室:启用用户-env编译-a ',而不是user_env_compile,FYI。谢谢! – cdmwebs

+4

请注意,自2014年3月以来,Heroku已退役'user-env-compile'。 – wspruijt

相关问题