2

我不知道还有什么地方可以解决这个问题:我在我的项目上花了很多时间,这是一个面向大学生的招聘活动网站,但已经陷入僵局。

简而言之,我在 localhost 中缓慢前进——添加了像 Devise 这样的组件;通过提供商 Facebook、LinkedIn 和 Google 进行的 Omniauth 身份验证——在此过程中建立了一个我引以为豪的网站。一切似乎都工作得很好,但是一旦我推到“heroku master”,事情就开始大受打击。

我认为问题最有可能出现在或周围:我有一个身份验证模型来跟踪单个用户的身份验证提供程序,以及用户模型(保存所有 oauth 代码)。

事不宜迟,这是我的应用程序的 heroku 域和我的​​代码:

http://lit-everglades-7633.herokuapp.com/
https://gist.github.com/mecampbellsoup/6357855

我怀疑的事情是相关的:

  • 'heroku run rake db:seed' 在 'pg:reset' 和 'rake db:migrate' 之后...而不是使用种子文件本身的内容进行播种,而是创建了一个空白事件和公司;更多关于这下面
  • 根据heroku日志(如下),与omniauth请求相关的路由和操作似乎工作得很好,但实际上没有创建用户或身份验证:

  • 当重置 postgres db 后,我尝试运行 'heroku run rake db:create' 或 'db:setup' 我抱怨如下:

☁ duke_recruits [master] heroku run rake db:setup
运行rake db:setup附加到终端... up, run.5886
致命​​:数据库“postgres”权限被拒绝
详细信息:用户没有 CONNECT 权限。

  • 此外,“heroku run rake db:seed”似乎正在做它的事情,但我的数据库只有 1 个空事件和 1 个空公司:

☁ duke_recruits [master] heroku run rake db:seed
运行rake db:seed附加到终端... up, run.1767

☁ duke_recruits [master] heroku run rails c
Running rails cattach to terminal... up, run.6135
Event.allLoading 生产环境(Rails 4.0.0)
irb(main):001:0> Event.all
=> #ActiveRecord::关系 [#Event id: 1, title: nil, location: nil, description: nil, date: nil, end_date: nil, company_id: nil, created_at: "2013-08-27 19:30:06", updated_at: " 2013-08-27 19:30:06"]
irb(main):002:0> Company.all
=> #ActiveRecord::Relation [#Company id: 1, name: nil, description: nil, website: nil,标志:无,created_at:“2013-08-27 19:30:06”,updated_at:“2013-08-27 19:30:06”]

日志(在 heroku 上打开应用程序并尝试 google 身份验证时):


2013-08-27T19:49:18.701285+00:00 app[web.1]:在 2013-08-27 19:49:18 +0000 2013-08-27T19:49 开始获取 68.175.76.48 的“/” : 18.701019+00:00 app[web.1]: => Rails 4.0.0 应用程序开始在 http://0.0.0.0:49710
2013-08-27T19:49:18.701019+00:00 app[web.1 ]: => Ctrl-C 关闭服务器
2013-08-27T19:49:18.701019+00:00 app[web.1]: => 启动 WEBrick
2013-08-27T19:49:18.701019+00:00 app[web .1]: => 运行 `rails server -h` 以获得更多启动选项
2013-08-27T19:49:18.701019+00:00 app[web.1]: 在 2013-08 开始 GET "/" for 68.175.76.48 -27 19:49:18 +0000
2013-08-27T19:49:19.131115+00:00 heroku[路由器]: at=info method=GET path=/ host=lit-everglades-7633.herokuapp.com fwd=" 68.175.76.48" 测功机=网络。1 连接=2ms 服务=442ms 状态=304 字节=0
2013-08-27T19:49:19.221284+00:00 heroku[路由器]: at=info method=GET path=/assets/application-b44a43097f814ac98347f6802323e25f.js host=lit-everglades-7633.herokuapp.com fwd="68.175. 76.48" dyno=web.1 connect=1ms service=12ms status=304 bytes=0
2013-08-27T19:49:49.440894+00:00 app[web.1]: 2013 年开始 GET "/" for 68.175.76.48 -08-27 19:49:49 +0000
2013-08-27T19:49:49.440894+00:00 app[web.1]:在 2013-08-27 19:49 开始 GET "/" for 68.175.76.48: 49 +0000
2013-08-27T19:49:49.515520+00:00 heroku[路由器]: at=info method=GET path=/host=lit-everglades-7633.herokuapp.com fwd="68.175.76.48" dyno= web.1 connect=2ms service=80ms status=304 bytes=0
2013-08-27T19:50:48.534099+00:00 app[web.1]: 在 2013-08-27 开始 GET "/" for 68.175.76.48 19:50:48 +0000
2013-08- 27T19:50:48.534099+00:00 app[web.1]:在 2013-08-27 19:50:48 +0000
2013-08-27T19:50:48.575279+00开始获取 68.175.76.48 的“/” : 00 heroku[路由器]: at=info method=GET path=/host=lit-everglades-7633.herokuapp.com fwd="68.175.76.48" dyno=web.1 connect=1ms service=51ms status=304 bytes=0
2013-08-27T19:50:52.293922+00:00 app[web.1]:在 2013-08-27 19:50:52 +0000 2013-08-27T19 开始获取 68.175.76.48 的“/users/sign_up” :51:00.368352+00:00 app[web.1]: 2013-08-27 19:51:00 +0000 2013-08-27T19:51 开始 GET "/users/auth/google_oauth2" for 68.175.76.48: 00.368352+00:00 应用程序 [web.1]:在 2013-08-27 19:51:00 +0000 2013-08-27T19:51:00.368926+00开始为 68.175.76.48 获取“/users/auth/google_oauth2” :00 app[web.1]: I, [2013-08-27T19:51:00.368823 #2] INFO -- omniauth: (google_oauth2) 请求阶段已启动。 2013-08-27T19:51:00.392262+00:00 heroku[路由器]: at=info method=GET path=/users/auth/google_oauth2 host=lit-everglades-7633.herokuapp.com fwd="68.175.76.48" dyno=web.1 连接=3ms 服务=33ms 状态=302 字节=469
2013开始 GET "/users/sign_up" for 68.175.76.48 -08-27T19:50:52.293922+00:00 app[web.1]:在 2013-08-27 19:50:52 +0000 2013-08-27T19 开始为 68.175.76.48 获取“/users/sign_up”
: 50:52.591752+00:00 heroku[路由器]: at=info method=GET path=/users/sign_up host=lit-everglades-7633.herokuapp.com fwd="68.175.76.48" dyno=web.1 connect=1ms服务=307ms 状态=304 字节=0




2013-08-27T19:51:00.715597+00:00 app[web.1]: 开始 GET "/users/auth/google_oauth2" for 68.175。 76.48 在 2013-08-27 19:51:00 +0000
68.175.76.48 -27T19:51:00.715597+00:00 app[web.1]:在 2013-08-27 19:51:00 +0000
2013-08-27T19 开始 GET "/users/auth/google_oauth2" for 68.175.76.48: 51:00.716822+00:00 app[web.1]: I, [2013-08-27T19:51:00.716706 #2] INFO -- omniauth: (google_oauth2) 请求阶段已启动。
2013-08-27T19:51:00.997866+00:00 app[web.1]: Started GET "/users/auth/google_oauth2/callback?state=40ecfd10739cb874b5c461fc00cfd72ec4fcb694ef3a6878&code=4/D_(omitted_for_security)_GBlmiYhY(partially_omitted)E9yth.QpxI3jdcGpYYshQV0ieZDAoQOqyCgQI" 68.175.76.48 在 2013-08-27 19:51:00 +0000
2013-08-27T19:51:00.997866+00:00 app[web.1]: Started GET "/users/auth/google_oauth2/callback?state=10739cb874b5c461fc00cfd72ec4fcb694ef3a6878&code=4/D_GBlmiYhY1rCvgdgE9yth.QpxI3jdcGpYYshQV0ieZDAoQOqyCgQI" for 68.175.76.48 at 2013-08 -27 19:51:00 +0000
2013-08-27T19:51:00.998508+00:00 应用程序[web.1]:我,[2013-08-27T19:51:00.998379 #2] 信息——omniauth:( google_oauth2) 回调阶段已启动。 2013-08-27T19:51:02.188467+00:00 app[web.1]:在 2013-08-27 19:51:02 +0000 2013-08-27T19
开始获取 68.175.76.48 的“/users/sign_up”
:51:02.188467+00:00 app[web.1]: 在 2013-08-27 19:51:02 +0000 开始 GET "/users/sign_up" for 68.175.76.48
2013-08-27T19:51:02.234644+00:00 heroku[路由器]: at=info method=GET path=/users/sign_up host=lit-everglades-7633.herokuapp.com fwd="68.175.76.48" dyno= web.1 连接=9ms 服务=52ms 状态=304 字节=0

请让我知道您对我有什么问题,以及我是否可以澄清任何问题。我真的很感谢你的时间和帮助!

4

1 回答 1

1

在 pg:reset 之后,您可以运行 create 命令,但它通常会为您提供如下输出:

slkdjfs0dslkd already exists

因此,您将知道您的数据库已创建并可以使用。在你可以播种之前,请确保你迁移。只是标准的heroku方式

heroku run rake db:migrate

然后正常播种

heroku run rake db:seed
于 2013-08-27T20:29:28.423 回答