代码之家  ›  专栏  ›  技术社区  ›  minennick

部署到Heroku时出现问题:缺少“secret\u key\u base”和未初始化的常量post(NameError)

  •  0
  • minennick  · 技术社区  · 6 年前

    Im使用Rails 5.1.6;Ruby版本2.4.4;还有费加罗宝石

    当我的RoR应用程序在本地运行后,我决定将其部署到Heroku,但是当我尝试进入网站时,我得到了一个应用程序错误。我查了一下日志,发现了一个未初始化的常量(namererror)

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

    这是我的likes\u 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 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
    

    heroku run rake secret 并将生成的密钥设置为 heroku config:set SECRET_KEY_BASE= 'generated key' 后来我控制了钥匙的设定和其他所有来自费加罗的变量 heroku config

    最后我意识到在名字错误中 帖子 是用大写写的,看起来不寻常,所以我改成 帖子 /controllers/Posts/likes_controller 所以也是用大写写的。

    现在我真的不知道我真正的问题是什么。所以如果有人能帮我就好了。如果你需要更多的信息,请告诉我。谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   minennick    6 年前

    我的错误确实是写作,所以我改变了文件夹 帖子 帖子 git init