首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rake资源:推送到Heroku期间预编译失败

rake资源:推送到Heroku期间预编译失败
EN

Stack Overflow用户
提问于 2012-06-07 22:52:44
回答 2查看 3.8K关注 0票数 9

我目前在我的Rails应用程序中使用asset_sync,并且在我的Heroku应用程序中设置了环境变量。当我运行heroku配置时,我得到:

代码语言:javascript
复制
AWS_ACCESS_KEY_ID:     XXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXX
FOG_DIRECTORY:         MY-BUCKET-NAME
FOG_PROVIDER:          AWS
etc...

当我将我的应用程序推送到Heroku时,它尝试运行rake assets:预编译,然后我得到以下消息:

代码语言:javascript
复制
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

然后我就跑了:

代码语言:javascript
复制
heroku run rake assets:precompile --app my-app-name

...and它可以很好地处理一切并同步到S3:

代码语言:javascript
复制
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运行rake assets:预编译时,它会工作得很好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-08 14:01:33

我可以看到您正在运行assets:预编译带有--app my-app-name选项的rake任务。只是为了确认一下,你在Heroku上有多个应用吗?(例如,试运行和生产)。如果您确实要确保运行heroku config --app my-app-name会产生与heroku config相同的输出。

如果你使用上面的命令得到了预期的结果,ENV变量很可能不会像这里asset_sync_test github readme建议的那样在git推送上可用。您可以通过在config/environments/*.rb文件中使用以下内容来绕过此问题:

代码语言:javascript
复制
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']
票数 3
EN

Stack Overflow用户

发布于 2012-08-28 22:50:11

我在我们的一台服务器上也遇到了同样的问题,直到我在asset_sync github页面上找到了说明您需要运行

代码语言:javascript
复制
heroku labs:enable user-env-compile --app <appname>

才能让它发挥作用。

Heroku也有AssetSync documentation

现在只编译一次资产真是太好了

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10934269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档