Heroku上的Devise问题

时间:2014-12-05 04:04:37

标签: ruby-on-rails ruby ruby-on-rails-4 heroku devise

在Heroku上部署rails应用程序后,我遇到了问题。我的应用基本上是一个在线出租车预订平台。我使用Devise来验证用户身份。我在dev env中的SQLite DB的Users表中有几个用户。因此,在开发环境中,当我尝试使用这些用户中的任何一个登录我的应用程序时,它完美地运行。但是,当我在Heroku上部署相同的内容并尝试使用相同的用户凭据登录时,它会显示“无效的电子邮件或密码”错误。

我检查了Heroku日志,无法理解我哪里出错了。请帮忙!

2014-12-05T03:43:18.023059+00:00 app[web.1]: Processing by Devise::SessionsController#new as HTML
2014-12-05T03:43:18.017343+00:00 app[web.1]: Started GET "/users/sign_in" for 114.79.138.136 at 2014-12-05 03:43:18 +0000
2014-12-05T03:43:18.031662+00:00 app[web.1]:   Rendered vendor/bundle/ruby/2.0.0/gems/devise-3.4.1/app/views/devise/shared/_links.html.erb (0.4ms)
2014-12-05T03:43:18.031791+00:00 app[web.1]:   Rendered vendor/bundle/ruby/2.0.0/gems/devise-3.4.1/app/views/devise/sessions/new.html.erb within layouts/application (6.7ms)
2014-12-05T03:43:18.033007+00:00 app[web.1]: Completed 200 OK in 10ms (Views: 8.3ms | ActiveRecord: 0.0ms)
2014-12-05T03:43:18.395813+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=www.taxibol.in request_id=e7c11827-dbf9-4b6b-a208-e6c9c3b0cca2 fwd="114.79.138.136" dyno=web.1 connect=1ms
service=6ms status=304 bytes=133
2014-12-05T03:43:46.219043+00:00 app[web.1]: Started POST "/users/sign_in" for 114.79.138.136 at 2014-12-05 03:43:46 +0000
2014-12-05T03:43:46.226183+00:00 app[web.1]: Processing by Devise::SessionsController#new as HTML
2014-12-05T03:43:46.226214+00:00 app[web.1]:   Parameters: {"utf8"=>"???", "authenticity_token"=>"+EssZfe0ztWQvwNXt0u7/j8ntpBIDdM/l/DusVTXRZI=", "user"=>{"email"=>"raju.s@merucabs.com", "password"=>"[
FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
2014-12-05T03:43:46.331970+00:00 app[web.1]:   Rendered vendor/bundle/ruby/2.0.0/gems/devise-3.4.1/app/views/devise/shared/_links.html.erb (0.4ms)
2014-12-05T03:43:46.332041+00:00 app[web.1]:   Rendered vendor/bundle/ruby/2.0.0/gems/devise-3.4.1/app/views/devise/sessions/new.html.erb within layouts/application (3.2ms)
2014-12-05T03:43:46.332936+00:00 app[web.1]: Completed 200 OK in 107ms (Views: 4.5ms | ActiveRecord: 0.0ms)
2014-12-05T03:43:46.221273+00:00 app[web.1]: Processing by Devise::SessionsController#create as HTML
2014-12-05T03:43:46.221311+00:00 app[web.1]:   Parameters: {"utf8"=>"???", "authenticity_token"=>"+EssZfe0ztWQvwNXt0u7/j8ntpBIDdM/l/DusVTXRZI=", "user"=>{"email"=>"raju.s@merucabs.com", "password"=>"[
FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
2014-12-05T03:43:46.224795+00:00 app[web.1]: Completed 401 Unauthorized in 3ms  

1 个答案:

答案 0 :(得分:3)

我不相信本地开发SQLite数据库中的数据会被导入到Heroku的生产数据库中。

当您部署该站点时,您将获得一个空数据库,该数据库上运行了迁移,因此应用程序可以运行,但除非您创建种子数据,否则不会填充数据(稍后会详细介绍)。

您可以通过heroku的命令行工具(https://devcenter.heroku.com/articles/getting-started-with-rails4#console)手动创建使用rails控制台的用户,也可以在生产时注册为新用户,而不是通过控制台自行管理员访问。

最后一种方法是使用admin用户为数据库设置种子并将用户名/密码存储在配置变量中。基本上,您使用管理员用户设置种子(http://edgeguides.rubyonrails.org/active_record_migrations.html#migrations-and-seed-data),并通过配置变量(https://devcenter.heroku.com/articles/config-vars)设置用户名/密码。您希望使用配置变量,因为将用户名和密码放在种子文件中是不安全的。

我从来没有遇到过这个具体问题,但我之前已经处理过类似问题了,我认为这对你有用。

- 科里