【发布时间】:2019-10-08 01:00:58
【问题描述】:
我正在尝试将我的 rails 聊天应用程序部署到 Heroku,但我的 javascript 在资产预编译期间无法调用数据库。推送失败并显示 “预编译资产失败。”
循迹寻踪
remote: Caused by:
remote: PG::UndefinedTable: ERROR: relation "chatrooms" does not exist
remote: LINE 1: SELECT "chatrooms".* FROM "chatrooms"
经过一番调查,我发现Chatroom.all.each是什么造成了麻烦。
频道(客户端):
// my-app/app/assets/javascripts/channels/chatroom.js.erb
//Iterate through chatrooms
<% Chatroom.all.each do |chatroom| %>
App['chatroom' + <%= chatroom.id %>] = App.cable.subscriptions.create({channel: "ChatroomChannel", room: <%= chatroom.id %>},{
received: function(data) {
...
};
});
<% end %>
所以我在预编译期间似乎无法访问 Chatroom 模型。我需要在我的 production.rb 文件中添加什么内容吗?该应用程序在我的本地环境中运行良好。
【问题讨论】:
-
当您“尝试在 Heroku 上重置数据库”时,您做了什么?
-
我在终端输入了
$ heroku pg:reset,然后是$ heroku run rails db:migrate -
听起来好像它试图在创建聊天室之前创建 chatroom_users。您是否仔细检查过您的迁移没有出现问题?
-
它们看起来顺序正确。从最早到最新的时间戳,我的迁移是:create_users.rb、create_messages.rb、create_chatrooms.rb、create_chatroom_users.rb 和 add_chatroom_id_to_users.rb.
标签: ruby-on-rails postgresql heroku