- 投稿日:2020-02-06T19:13:24+09:00
git pull についての備忘録
はじめに
- 「git pull origin master」を実行することで、リモートリポジトリから最新の情報を取り込むことができる。
- ここではgit pullがどういった動きで行われているかについて書く。
出てくる用語
- origin: リモートリポジトリのURLの別名。
- master: デフォルトのブランチの名前、メインのブランチ。リモートにもローカルにも存在。
- origin/master:リモートリポジトリのmasterブランチを追跡しているローカルのブランチ。
git pullの中身
- git pullは以下の行程を一気通貫で行うコマンド。
1.git fetch
リモートリポジトリから最新の情報をローカルリポジトリに持ってくることができる。
持ってくる場所はローカルのmaterブランチではなくorigin/masterブランチに取り込む。
2.git merge
ブランチをmasterに反映させるコマンド。
origin/masterブランチの情報をローカルのmasterブランチに取り込む。
イメージ
- 投稿日:2020-02-06T19:02:48+09:00
Pythonでオウム返しをするLinebotのエラー対応
はじめに
QiitaやWEB上には、オウム返しLinebotの作り方は、たくさんあります。
参考
https://qiita.com/kro/items/67f7510b36945eb9689b
https://www.casleyconsulting.co.jp/blog/engineer/3028/これらを参考に進めれば、基本作成完了しますが、
Herokuデプロイ時にエラーがたびたび発生し、私が初心者であるが故、エラー解消が結構大変でした。
なので、私が遭遇したエラーについて、対処法を記述していきます。開発環境
OS:Widows10
Python3.7.6
Flask1.1.1
line-bot-sdk1.15.0準備するファイル群
まず、main.py
サイトに載っているコピペで構わないと思います。
特に書き換えは必要なくいけました。main.pyfrom flask import Flask, request, abort from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) import os app = Flask(__name__) app.debug = False YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"] YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"] line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN) handler = WebhookHandler(YOUR_CHANNEL_SECRET) @app.route("/callback", methods=['POST']) def callback(): signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) app.logger.info("Request body: " + body) try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return 'OK' @handler.add(MessageEvent, message=TextMessage) def handle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=event.message.text)) if __name__ == "__main__": port = int(os.getenv("PORT")) app.run(host="0.0.0.0", port=port)次に、Procfile
ここで、かなり時間を食ってしまいました。
まず、ProcfileはProcfile.txtはダメで、拡張子は付けません。
普段、テキストエディタを使用する人は、下記コードを打って、txtファイルで保存してしまいがちです。作り方は、ターミナルを開いて、
$ echo web: python main.py > Procfileと打つと、下記のファイルが作成されます。
Procfileweb: python main.pyこれに気づくのに何時間かかったか。。。
次に、requirements
これは、requirements.txtです。
テキストエディタで下記のように作成します。requirements.txtFlask==1.1.1 line-bot-sdk==1.15.0最後に、runtime
これも、runtime.txtです。
テキストエディタで下記のように作成します。runtime.txtpython-3.7.6これらのファイルを一つのフォルダにまとめれば、準備は完了です。
デプロイ
LinemessagingAPI,Heroku,Gitのインストールや登録等は省略します。
ターミナルを開いて、先ほどのファイル群が存在するフォルダに移動します。
今回は、line_botというフォルダを作成しました。$cd C:\Users\user\line_botデプロイします。
$ git init $ git add . $ git commit -m "new commit" $ git push heroku masterエラーについて
fatal: 'heroku' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.私の場合、アクセストークンと、チャンネルシークレットの入力がうまくできていなかったため、下記を実行
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app アプリケーション名 $ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app アプリケーション名Setting YOUR_CHANNEL_ACCESS_TOKEN and restarting ⬢ アプリケーション名... done, v13 YOUR_CHANNEL_ACCESS_TOKEN: アクセストークンの欄の文字列このように表示されれば登録されています。
次に、
Scaling dynos... ! ! Couldn't find that process type (web).この場合、
heroku ps:scale web=1を入力するとエラー回避できました。
総括
エラーに関して、ファイルを準備する段階でタイプミスがほとんどでした。
ファイルを準備する際には、細心の注意を払い、大文字小文字などのスペルミスに注意して準備してください。初めての投稿で、へたくそでしたが
最後までお読みいただきありがとうございました。
もう少し、きちんと書くべきでした。この記事が少しでも誰かのお役に立てれば幸いです。