Вход на сайт Rails не работает (Heroku) - PullRequest
0 голосов
/ 09 апреля 2019

Я создаю приложение Rails, содержащее Login. В разработке все нормально. Не удается войти в систему (Heroku).

Поскольку я новичок в RoR, я следую этому Основному учебному пособию . Приложение содержит модель «Пользователь». У пользователя есть логический атрибут «активирован», поскольку учетная запись должна быть активирована после регистрации. Во время входа в систему появляется утверждение (см. Session_controller.rb):

if user.activated?

, что верно в разработке и ложно в производстве.

Я запихнул базу данных с seed.rb. На других страницах я вижу контент, также инициализированный с помощью seed.rb, так что я думаю, что это не проблема общей базы данных.

Поскольку данные, кажется, в порядке и работают в процессе разработки, я предполагаю, что просто что-то упустил, что трудно обнаружить для меня, как новичка, и, надеюсь, легко обнаружить для опытного программиста.

Вот часть моего кода. Скажи, если тебе нужно больше.

sessions_controller.rb:

def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
  if user.activated?
    log_in user
    params[:session][:remember_me] == '1' ? remember(user) : forget(user)
    redirect_to changenews_path
  else
    message  = "Account not activated. "
    message += "Check your email for the activation link."
    flash[:warning] = message
    redirect_to root_url
  end
else
  flash.now[:danger] = 'Invalid email/password combination'
  render 'new'
end
end

Это проверяет, активирован ли пользователь, который входит в систему. В производстве это приводит к «else> message [...]».

мой Gemfile:

source 'https://rubygems.org'

gem 'rails',        ' 5.1.6'
gem 'bootstrap', ' 4.2.1'
gem 'puma',         ' 3.9.1'
gem 'sass-rails',   ' 5.0.6'
gem 'uglifier',     ' 3.2.0'
gem 'coffee-rails', ' 4.2.2'
gem 'jquery-rails', ' 3.1.0'
gem 'turbolinks',   ' 5.0.1'
gem 'jbuilder',     ' 2.7.0'
gem 'coffee-script-source', ' 1.8.0'
gem 'bcrypt',         ' 3.1.12'
gem 'popper_js', ' 1.14.5'
gem 'font-awesome-sass', ' 5.8.0'

group :development, :test do
  gem 'sqlite3', ' 1.3.13'
  gem 'byebug',  ' 9.0.6', platform: :mri
end

group :development do
  gem 'web-console',           ' 3.5.1'
  gem 'listen',                ' 3.1.5'
  gem 'spring',                ' 2.0.2'
  gem 'spring-watcher-listen', ' 2.0.1'
end

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest',                 '5.10.3'
  gem 'minitest-reporters',       '1.1.14'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
end

group :production do
  gem 'pg', '0.18.4'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Я попытался установить все драгоценные камни на последнюю версию ('> = X.Y.Z') и выполнить "комплектную установку", но эффекта не было.

и журнал Heroku (извлечение):

:23.352114+00:00 app[web.1]: I, [:23.352005 #4]  INFO -- : [shortened] Started POST "/login" for 77.183.95.212 at 2019-04-09 11:43:23 +0000

:23.353232+00:00 app[web.1]: I, [:23.353123 #4]  INFO -- : [shortened] Processing by SessionsController#create as HTML

:23.353509+00:00 app[web.1]: I, [:23.353266 #4]  INFO -- : [shortened]   Parameters: {"utf8"=>"✓", "authenticity_token"=>"shortened", "session"=>{"email"=>"mymail@mymail.de", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}

:23.356478+00:00 app[web.1]: D, [:23.356409 #4] DEBUG -- : [shortened]   [1m[36mUser Load (0.8ms)[0m  [1m[34mSELECT  "users".* FROM "users" WHERE "users"."email" = $1 LIMIT $2[0m  [["email", "mymail@mymail.de"], ["LIMIT", 1]]

:23.432392+00:00 app[web.1]: I, [:23.432248 #4]  INFO -- : [shortened] Redirected to https://myappname.herokuapp.com/

Я не могу получить информацию из сообщения отладки. И я понятия не имею, что означает «LIMIT». Я надеюсь, что кто-то из вас знает ответ на мою проблему.

Так что обычно я ожидаю, что вход в систему будет успешным, поскольку база данных, кажется, в порядке. В настоящее время пользователь активирован? в Героку ложь.

Заранее спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019
  1. Heroku запускает пакетную установку, когда вы нажимаете код, поэтому вам не нужно его запускать.

  2. Вы запустили heroku run db:seed, чтобы фактически заполнить базу данных?

  3. Если вы это сделали, вы можете запустить heroku run rails c, затем u = User.all и вручную проверить, посмотрев на вывод, что пользователи правильно посеяли.

  4. (мнение) Я бы предложил использовать гем "devise" для пользователей / логинов и т. Д., Но не стесняйтесь использовать все, что вам удобнее.

  5. Пожалуйста, используйтегерои регистрируют, чтобы дать нам (и вам самим) лучшее понимание того, что не так, выполнив heroku logs -n 200, 200 - количество отображаемых строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...