質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • Ruby on Rails

    7654questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Heroku

    939questions

    HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

  • LINE Messaging API

    170questions

herokuでアプリが上げられず、blank appとでてしまう

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 298

ari1235

score 3

 前提・実現したいこと

lineのおうむ返しbotをrailsで書いて、herokuで作ろうと思ったところ、blank appとエラーが出てしまい、おうむ返しはされない。DBはmysqlを使っている。参考にした記事はこちら「Rails HerokuでLINE BOTを試してみた
初心者なので初歩的な質問かと思いますが、解決に協力お願いします。

 発生している問題・エラーメッセージ

エラーメッセージ

2018-06-21T02:52:14.668542+00:00 heroku[router]: at=info code=H81 desc="Blank app" method=POST path="/callback" host=〇〇〇.herokuapp.com request_id=772e0ddf-9f64-4d66-b93a-b34fbf16f1e8 fwd="203.104.146.154" dyno= connect= service= status=502 bytes= protocol=https

 該当のソースコード

class WebhookController < ApplicationController

  // Lineからのcallbackか認証
  protect_from_forgery with: :null_session

  CHANNEL_SECRET = ENV['line_secret']
  OUTBOUND_PROXY = ENV['herokuのfixie_proxy']
  CHANNEL_ACCESS_TOKEN = ENV['line_access_token']

  def callback
    unless is_validate_signature
      render :nothing => true, status: 470
    end

    event = params["events"][0]
    event_type = event["type"]
    replyToken = event["replyToken"]

    case event_type
    when "message"
      input_text = event["message"]["text"]
      output_text = input_text
    end

    client = LineClient.new(CHANNEL_ACCESS_TOKEN, OUTBOUND_PROXY)
    res = client.reply(replyToken, output_text)

    if res.status == 200
      logger.info({success: res})
    else
      logger.info({fail: res})
    end

    render :nothing => true, status: :ok
  end

  private
  # verify access from LINE
  def is_validate_signature
    signature = request.headers["X-LINE-Signature"]
    http_request_body = request.raw_post
    hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, CHANNEL_SECRET, http_request_body)
    signature_answer = Base64.strict_encode64(hash)
    signature == signature_answer
  end


end
//libファイル

require "faraday"
require "faraday_middleware"
require "json"
require "pp"


class LineClient
  END_POINT = "https://api.line.me"

  def initialize(channel_access_token, proxy = nil)
    @channel_access_token = channel_access_token
    @proxy = proxy
  end

  def post(path, data)
    client = Faraday.new(:url => END_POINT) do |conn|
      conn.request :json
      conn.response :json, :content_type => /\bjson$/
      conn.adapter Faraday.default_adapter
      conn.proxy @proxy
    end

    res = client.post do |request|
      request.url path
      request.headers = {
        'Content-type' => 'application/json',
        'Authorization' => "Bearer #{@channel_access_token}"
      }
      request.body = data
    end
    res
  end

  def reply(replyToken, text)

    messages = [
      {
        "type" => "text" ,
        "text" => text
      }
    ]

    body = {
      "replyToken" => replyToken ,
      "messages" => messages
    }
    post('/v2/bot/message/reply', body.to_json)
  end

end

 試したこと

gemファイルを見直したり、herokuのDBをmysqlに設定し直したりはした。
herokuのconfigで環境変数も設定してある。

 補足情報(FW/ツールのバージョンなど)

gemはmysqlのバージョンを合わせる他、
gem 'dotenv-rails'
gem 'faraday'
gem 'faraday_middleware'

group :production do
gem 'rails_12factor'
end
を追記した。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

デプロイが正常に行われていないようです。

正常にアプリケーションが作成されているなら
git push heroku master
でデプロイできるはずです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/21 14:44

    回答ありがとうございます。
    git push heroku master をしたところ、いくつかエラーがあるようで、
    remote: Tasks: TOP => environment
    remote: (See full trace by running task with --trace)
    remote: !
    remote: ! Precompiling assets failed.
    remote: !
    remote: ! Push rejected, failed to compile Ruby app.
    remote:
    remote: ! Push failed
    このエラーの意味がわかりません!

    キャンセル

  • 2018/06/21 14:54

    ローカルで
    rails assets:precompile
    でプリコンパイルは出来ていますか?

    キャンセル

  • 2018/06/21 23:52

    rake assets:precompileはできてませんでした!
    実行したら、一応blank appと表示されるエラーはなくなりました!!ありがとうございます!!
    ただ、次はApp crashedとエラーが出てしまったので、それについてはまた自分なりに調べた上で別に質問させていただくかもしれません(^^;)

    キャンセル

同じタグがついた質問を見る

  • Ruby on Rails

    7654questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Heroku

    939questions

    HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

  • LINE Messaging API

    170questions