gpt4 book ai didi

ruby-on-rails - 登录不适用于 heroku 应用程序

转载 作者:数据小太阳 更新时间:2023-10-29 08:49:49 25 4
gpt4 key购买 nike

好吧,这让人非常沮丧,一个接一个的问题。我将我的应用程序推送到 heroku,当我访问该 url 时,我得到了我的登录屏幕(我应该这样做)。但是当我实际尝试登录时,它会给我“无效的用户名/密码”警告消息。但是,在我的本地主机上一切正常。我假设应用程序与我的数据库通信存在问题。我运行了“heroku run rake db:migrate”但没有成功。

在我的本地主机上,我使用的是标准的 sqlite3 数据库,但是在将它推送到 heroku 时,我必须在我的 gem 文件中包含 gem 'pg' 以避免错误。当我将它保留为 gem sqlite3 时,我收到一条错误消息,说它找不到 sqlite3.h 文件或类似的东西。

我可以看到我的数据库在 postgres.heroku.com 上。我还通过 heroku 支持的推荐安装了这个 gem

gem 'activerecord-postgresql-adapter'

这是我尝试输入登录信息时来自 heroku 的一些日志。非常感谢任何帮助。

←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Started POST "/session" for 74.143.68.203 at 2013-04-04 14:31:15 +0000
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Processing by SessionsController#create as HTML
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Parameters: {"utf8"=>"???", "authenticity_token"=>"rQ1i9DRCV3qju2+RSBwp/9XYW8+6RiLfKfGZFNEcbT8=", "email"=>"admin@ciagent.com", "password"=>"[FILTERED]", "commit"=>"Login"}
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Rendered sessions/new.html.erb within layouts/application (0.9ms)
←[36m2013-04-04T14:31:15+00:00 app[web.1]:←[0m Completed 200 OK in 4ms (Views: 2.2ms | ActiveRecord: 1.2ms)
←[33m2013-04-04T14:31:16+00:00 heroku[router]:←[0m at=info method=GET path=/favicon.ico host=boiling-reef-2060.herokuapp.com fwd="74.143.68.203" dyno=web.1 connect=2ms service=7ms status=304 bytes=0
←[33m2013-04-04T14:31:15+00:00 heroku[router]:←[0m at=info method=POST path=/session host=boiling-reef-2060.herokuapp.com fwd="74.143.68.203" dyno=web.1 connect=1ms service=12ms status=200 bytes=1721

我只是不明白为什么当我的应用程序在本地主机上使用相同的用户名/密码时我可以登录,但是当应用程序在 heroku 上时它无法识别登录信息。

附加编辑 ______________/p>

我打开了本地应用程序的控制台,发现了我在寻找用户时所期望的结果:

$ rails c
Loading development environment (Rails 3.2.13)
irb(main):001:0> user=User.find(1)
←[1m←[36mUser Load (5.0ms)←[0m ←[1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1←[0m [["id", 1]]
=> #<User id: 1, email: "admin@ciagent.com", hashed_password: "dc009272b087019fb2b20b691dc827dca1424a1a", created_at: "2010-10-29 19:43:00", updated_at: "2011-01-12 20:07:09", admin: "yes", logo: nil>

当我在 heroku 上打开控制台时寻找这个是我收到的错误。我会继续寻找修复方法,但也许你们会看到一个明显的危险信号。

Connecting to database specified by DATABASE_URL
Loading production environment (Rails 3.2.13)
irb(main):001:0> user=User.find(1)
user=User.find(1)
User Load (39.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
ActiveRecord::RecordNotFound: Couldn't find User with id=1
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:343:in `find_one'
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:314:in `find_with_ids'
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:107:in `find'
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/querying.rb:5:in `find' from (irb):1
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

最佳答案

当您在本地计算机上运行该应用程序(也称为开发)时,它使用的是本地 sqlite 数据库。当您在 heroku(也称为生产)上运行它时,它使用基于云的 postgres 数据库。这是必要的,以便您可以在本地计算机上进行更改和开发应用程序,而不必担心破坏实时生产数据库。数据库设置在 config/database.yml 中。

如果您已将用户名/密码添加到 db/seeds 或通过迁移,您可以合理地期望相同的登录名适用于开发和生产。据推测,这就是您之前所做的,当您说这有效时。要么,要么你的生产和开发都指向同一个数据库(不推荐)。

因为它在这里不起作用,我猜您是通过控制台或网站本身添加了登录信息。您可以运行 heroku run rails console 在生产服务器上打开控制台,然后添加登录。或者您可以通过迁移添加它们,然后在生产中运行相同的迁移,以便它们也被添加到那里。

关于ruby-on-rails - 登录不适用于 heroku 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com