十を聞いて一を知る

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

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

こんばんは。
今日こそは自動化するとか言ってましたが、ちょっとした問題が起きてしまいました。

それがこちら。 f:id:taira1999120:20170311230211p:plain
Herokuにあげていても、Herokuコマンドを送ったクライアントPC(今回の場合私のMac)が動いてないと、止まってしまうのです。
ということで、常時稼働させている自家用Windows機で走らせようということになりました。


今日のテーマはRuby on Windowsです。


とはいえ、やり方はQiitaにあったので特に私が書くことはありません。というか改めて書くのが面倒臭い

有志によって配布されているコンパイル済みのバイナリ

ここから落として、あとは道なりです。
どのバージョンを落とすかですが、まず、自分のMacでターミナルを立ち上げます。 rubyのバージョンを確認します。

$ ruby -v

f:id:taira1999120:20170311230154p:plain
f:id:taira1999120:20170311230155p:plain
ないですね笑
2.3.3を落としました。動かなかったらその時のこと。

インストールが完了したら、Windowsにソースを移して、コマンドプロンプトを立ち上げます。 実行します。

C:\HOGE> ruby auto_reservation.rb

以上です。

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

こんばんは。
今日は、前エントリの時点までのプログラムを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

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

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