我不知道从这里去哪里。
Rails 4.2.5,Ruby 2.3.8,Devise,Heroku 7.16.7
App在本地运行良好,并成功部署到Heroku。当我访问实时应用程序时,主页将按预期填充,并且可以访问“关于”页面。我有一个Wikis索引链接,当我尝试访问它时,出现以下Wiki错误。无需登录即可查看索引页面。
单击登录或注册链接时出现相同的错误。模式显示了为两个模型创建的表。
我尝试过的事情:
在注释掉devise_for:用户之后,从测试分支进行部署,推送到Heroku,这样迁移将得以运行,随后取消注释devise_for:用户,并将agin推送到Heroku。没有运气。
我尝试过rake db:reset。没有运气。
我在工厂文件中查找了任何一个Rails模型,但没有找到任何引用。
RAILS_ENV =测试heroku耙db:migrate
维基错误
2018-12-13T00:08:10.414883+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "wikis" does not exist
2018-12-13T00:08:10.414885+00:00 app[web.1]: LINE 1: SELECT "wikis".* FROM "wikis" ORDER BY created_at DESC
2018-12-13T00:08:10.414887+00:00 app[web.1]: ^
2018-12-13T00:08:10.414888+00:00 app[web.1]: : SELECT "wikis".* FROM "wikis" ORDER BY created_at DESC):
2018-12-13T00:08:10.414890+00:00 app[web.1]: app/policies/wiki_policy.rb:42:in `resolve'
2018-12-13T00:08:10.414892+00:00 app[web.1]: app/controllers/wikis_controller.rb:26:in `index'
2018-12-13T00:08:10.414893+00:00 app[web.1]:
2018-12-13T00:08:10.414895+00:00 app[web.1]:
登录/注册错误
2018-12-13T00:09:49.468548+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "users" does not exist
2018-12-13T00:09:49.468550+00:00 app[web.1]: LINE 5: WHERE a.attrelid = '"users"'::regclass
2018-12-13T00:09:49.468552+00:00 app[web.1]: ^
2018-12-13T00:09:49.468553+00:00 app[web.1]: : SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2018-12-13T00:09:49.468555+00:00 app[web.1]: pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
2018-12-13T00:09:49.468557+00:00 app[web.1]: FROM pg_attribute a LEFT JOIN pg_attrdef d
2018-12-13T00:09:49.468558+00:00 app[web.1]: ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2018-12-13T00:09:49.468560+00:00 app[web.1]: WHERE a.attrelid = '"users"'::regclass
2018-12-13T00:09:49.468561+00:00 app[web.1]: AND a.attnum > 0 AND NOT a.attisdropped
2018-12-13T00:09:49.468564+00:00 app[web.1]: ORDER BY a.attnum
2018-12-13T00:09:49.468565+00:00 app[web.1]: ):
spec / factories / wikis.rb
FactoryGirl.define do
factory :wiki do
title "MyString"
body "MyText"
private false
user
end
end
spec / factories / users.rb
FactoryGirl.define do
factory :user do
email 'sample_user@google.com'
password 'sample_password'
end
end
真的很感谢您的帮助。
提前谢谢!
答案 0 :(得分:1)
以下有关您的部署情况的陈述假定一个正常配置的Rails应用程序。
您的项目正在处理三个单独的部署,并且每个部署都有自己的数据库(因此也有自己的数据库迁移状态)。您的三种环境是(标签任意):
database/config.yml
所见)以下是在每个单独的部署中运行迁移的方式:
RAILS_ENV=test rake db:migrate
(配置了Rails的环境变量,然后使用Rails.env从database.yml中选择配置)rake db:migrate
(“开发”是默认的Rails环境)heroku run rake db:migrate
<----可能是您的解决方案。我的最佳猜测是,您需要运行最后一个命令,以确保已将迁移(包括称为CreateWikis的迁移)应用于“ heroku”部署中的数据库。
答案 1 :(得分:0)
您确定
如果它在本地运行,并且您收到错误PG::UndefinedTable
,这似乎是缺少的迁移。
对于2,您可以在应用的根目录中添加一个Procfile
(无扩展名),只需输入:
web: bundle exec puma -p $PORT -e $RAILS_ENV
release: bundle exec rails db:migrate
这将自动在部署时运行您的迁移,请参见此处:https://devcenter.heroku.com/articles/release-phase
仅部署到Heroku不会自动迁移数据库。我不会尝试手动登录Heroku控制台来运行迁移。您有时会忘记这样做,而对错误消息head之以鼻:-)