Проблемы с развертыванием в Heroku: отсутствует секретная_ключа_базы и неинициализированные постоянные сообщения (NameError) - PullRequest
0 голосов
/ 28 октября 2018

Я использую Rails 5.1.6;Ruby-версия 2.4.4;и Figaro Gem

После того, как локально мое RoR-приложение заработало, я решил развернуть его в Heroku, но когда я пытаюсь зайти на сайт, я получаю сообщение об ошибке приложения.Я просмотрел журналы и обнаружил неинициализированную константу (NameError)

/app/controllers/Posts/likes_controller.rb:1:in `<top (required)>': uninitialized constant Posts (NameError)

Вот мой likes_controller.rb:

class Posts::LikesController < ApplicationController
  before_action :authenticate_user!
  before_action :set_post

  def show
    @post.likes.where(user_id: current_user.id).first_or_create
    respond_to do |format|
      format.html {redirect_to @post}
      format.js
    end
  end

  def create
    @post.likes.where(user_id: current_user.id).first_or_create
    respond_to do |format|
      format.html {redirect_to @post}
      format.js
    end
  end

  def destroy
    @post = Post.find(params[:post_id])
    if @post.present?
      @like = Like.where(user_id: current_user.id, post_id: @post.id).first
      if @like.present?
        @like.destroy
        redirect_to post_path(@post), :notice => 'Unliked!'
      else
        redirect_to post_path(@post), :alert => 'An error prevented you from unliking 
this post!'
      end
    else
      redirect_to p, :alert => 'Invalid post!'
    end
  end

  private

  def set_post
    @post = Post.find(params[:post_id])
  end
end

Я попытался запустить heroku rake db:migrate, чтобы сопоставить свою базу данных с моейкод, но он все еще дает мне ту же ошибку.Тогда я подумал, что, возможно, моя миграция не верна, но после управления в режиме разработки они кажутся правильными.Затем я попытался запустить рельсы локально в производственном режиме с помощью rails s -e production, который дал мне эту ошибку:

2018-10-28 17:02:24 +0100: Rack app error handling request { GET / }
#<RuntimeError: Missing `secret_key_base` for 'production' environment, set this value 
in `config/secrets.yml`>

, которая казалась мне довольно близкой к тому, с чем говорили мои журналы heroku:

2018-10-28T15:50:00.991935+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=myapp.herokuapp.com request_id=c081e39f-f4f5-49e6-a7d3-3a72060762cb fwd="131.188.24.12" dyno= connect= service= status=503 bytes= protocol=https

Итак, я установил свой secret_key_base с помощью heroku run rake secret и установил сгенерированный ключ как heroku config:set SECRET_KEY_BASE= 'generated key' После этого я контролировал, что ключ был установлен и все мои другие переменные из figaro с помощью heroku config, и все было правильно.Но я все еще получил ту же ошибку / с.

Наконец я понял, что в NameError Posts было написано в верхнем регистре, что выглядело необычно, поэтому я исправил его в posts и развернул снова, но япо-прежнему получаю ту же ошибку, что и раньше, с /controllers/Posts/likes_controller, также написанную заглавными буквами.

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

1 Ответ

0 голосов
/ 29 октября 2018

Моя ошибка действительно была записью, поэтому я изменил папку Сообщений на сообщений .Чтобы развернуть его на heroku, мне нужно было скопировать и вставить мое приложение в новый каталог, чтобы я мог установить новое git-репо с git init.В противном случае он использовал мою старую и не развернул изменение имени папки.

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