Heroku总是在Rails 3.2中使用生产环境运行assets:precompile。

11

我已将Heroku环境设置为staging,但我的资产始终在production环境下编译。

这是heroku config的结果:

GEM_PATH            => vendor/bundle/ruby/1.9.1
LANG                => en_US.UTF-8
PATH                => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
RACK_ENV            => staging

我已经在production.rb文件中添加了一个异常处理程序,以便在编译资产时知道它所在的环境。服务器正常启动,运行heroku run console显示我正在运行staging环境。

只有在运行assets:precompile时,它才始终处于production环境中。

如果需要,我可以发布任何其他配置文件。

我还可以添加我正在Heroku上运行Rails 3.2.2和Cedar堆栈。


heroku run rake about的输出:

About your application's environment
Ruby version             1.9.2 (x86_64-linux)
RubyGems version         1.3.7
Rack version             1.4
Rails version            3.2.2
JavaScript Runtime       therubyracer (V8)
Action Pack version      3.2.2
Active Support version   3.2.2
Middleware               Rack::Cache, ActionDispatch::Static, Rack::Lock, #, Rack::Runtime, Rack::Auth::Basic, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Callbacks, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, ActionDispatch::Head, Rack::ConditionalGet, Rack::ETag, ActionDispatch::BestStandardsSupport
Application root         /app
Environment              staging

运行heroku run rake assets:precompile的结果是:

/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=staging RAILS_GROUPS=assets

我是不是应该放弃,直接给Heroku发邮件?

2个回答

19

1
我认为Heroku的开发人员应该在文档中明确指定这一点。 - Prasad Surase
此插件现已被弃用 - https://devcenter.heroku.com/articles/labs-user-env-compile - Martin Stannard

1

尝试将RAILS_ENV设置为staging,看看这是否会让Heroku更加愉快。


我不知道如何解决这个问题,但你可能可以绕过它。如果存在public/assets/manifest.yml文件,则Heroku资产编译器将不会运行。在这种情况下,您需要自己预编译资产,但这可能适用于您。请查看http://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar获取更多信息。 - Veraticus
这意味着我必须将我的资产检入我的代码库,但我真的不想这样做。 - Nicklas A.
或将它们同步到S3并将其包含在.gitignore中。这就是我们最终采取的做法;我们使用asset_sync并手动检查manifest.yml文件。 - Veraticus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接