読者です 読者をやめる 読者になる 読者になる

十を聞いて一を知る

要領の悪い高専生がプログラミングをします。

Mechanizeを使ってWeb予約を自動化してみる・続々々々

自動化 LINE Bot 2016年度春休み連載

こんばんは。
今日は、前エントリの時点までのプログラムをHerokuにあげます。

Heroku上にアプリ作って、

$ heroku login
$ heroku create

git initして、

$ git init
$ git add ファイル名.rb
$ git commit -m 'first commit'
$ git remote add heroku https://git.heroku.com/Heroku上のアプリ名.git

pushしたんですけど…

$ git push heroku master




こんなエラーが出ました。

remote:  !     No default language could be detected for this app.
remote:             HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:             See https://devcenter.heroku.com/articles/buildpacks

最初は公式のドキュメントのこの辺りを参考にして、手動で

$ heroku buildpacks:set heroku/ruby

としたんですが、今度はこんなエラーが出てきました。

remote: -----> Failed to detect app matching no buildpack
remote:        More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure

指示通りのURLに飛ぶと、以下のように書いてありました。

If the configured buildpack cannot handle your application (as determined by its detection script), you will receive an error. For example, Heroku’s Ruby buildpack expects a Gemfil to be present in the root folder of an application to correctly identify its type, but if the buildpack of an application is set to heroku/rub and no Gemfil is present, the application will fail to build.

rubyのビルドバックを使うならGemfileもルートディレクトリに入れておいてねってことのようですので、

$ bundle init

今回はmechanizeline-bot-apiを使うのでGemfileを編集して、

# Gemfile

source "https://rubygems.org"

gem 'mechanize'
gem 'line-bot-api'

いつものようにbundle install

$ bundle install

Gemfile.lockが生成されるので、Gemfileと一緒にcommitしてpush

$ git add Gemfile Gemfile.lock
$ git commit -m 'bundle install'
$ git push heroku master

これで成功するはずです。


あとはプログラムをHeroku上で走らせるだけ。

$ heroku run ruby ファイル名.rb

以上で終了です!!
お疲れ様でした。

明日はいよいよ自動化です。
多分一瞬で終わると思います。
それでは、おやすみなさい。