对于一般的rails和web开发我相当陌生,所以也许我忘记了做一些简单的事情,但是我一直在这个问题上停留了好几个小时。我试图将我的Rails应用推向Heroku,并且不断收到一条消息“预编译资产失败”。通过控制台滚动起来,我真的看到错误的地方是在向Heroku推送Rails应用程序时未能预编译资产
Running: rake assets:precompile
remote: I, [2015-06-09T16:33:23.020943 #736] INFO -- : Writing /tmp/build_a3606aeafbcd156e85ce23a261b8ffd5/public/assets/logo-7f005e1459dfe2528e40b953dcc9b0d4.png
remote: PG::UndefinedTable: ERROR: relation "speed_records" does not exist
remote: LINE 1: SELECT "speed_records".* FROM "speed_records"
remote: ^
remote: : SELECT "speed_records".* FROM "speed_records"
remote: rake aborted!
remote: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "speed_records" does not exist
remote: LINE 1: SELECT "speed_records".* FROM "speed_records"
remote: ^
remote: : SELECT "speed_records".* FROM "speed_records"
remote: (in /tmp/build_a3606aeafbcd156e85ce23a261b8ffd5/app/assets/javascripts/googlemaps.js.erb)
remote: /tmp/build_a3606aeafbcd156e85ce23a261b8ffd5/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:822:in `async_exec'
这是我与他人合作的一个小项目,和我们都部署到分开的Heroku应用来测试我们自己的工作因为我们使用的API之一在localhost:3000上运行时不起作用。除此之外,该网站在localhost上运行良好,但Heroku不会允许我无误地推送它。即使我删除了本地所有的东西,并且从头开始克隆主分支,这已经托管并且在不同的Heroku上运行良好,但当我尝试自己推送它时,仍然出现错误。我认为问题的一部分可能与我们使用sqlite3 gem进行开发的事实有关,但与Heroku需要的postgres进行生产有关。不过,我对于使用数据库真的很陌生,所以我不知道这是否确实是正确的,或者我忘了做任何事情。
在此先感谢您的帮助,我花了数小时搜索这个问题,并完全陷入困境。
编辑:在花费太多时间后发现解决方案。问题的根源似乎是我在所有尝试的rake命令之前没有使用“bundle exec”。根据我的理解,当您用于特定项目的宝石版本与系统范围内安装的版本不匹配时,这是必需的。
我试过了,仍然没有运气。我可以在本地进行预编译而不会出错,但是当我推送到Heroku时,它会在“捆绑安装”之后再次自动运行“rake资产:预编译”。似乎如果我可以在预编译之前在Heroku一侧运行“rake db:migrate”,那可能会修复它,但是当我推送到Heroku时,一切都会自动完成 –
您可能不应该在您的数据库中建立依赖关系资产。资产是完全静态的,他们实际上不需要依赖数据库来存储数据。 – meagar
我想我们可能必须这样做这个项目。该项目的一部分涉及使用谷歌地图API并根据我们以前收集的数据在其上放置标记,所以我相信在这种情况下它必须依赖于数据库。即使我们这样做并不是最佳做法,但我的主要关注点是首先将它正确地部署到Heroku,以便测试我写的内容,出于某种原因,这对我的所有队友来说工作得非常好但不适合我。 –