APIを作成
APIを作ってみる。以前Sinatraは少し触ったことがあったが、APIとか作ったことない。APIができれば、ニュースアプリのようなものが作れるかもしれないし、やってみることにした。
http://orfvr.hatenablog.com/entry/2014/05/07/143141
主なコマンドはこれを参考にした。
http://blog.morizotter.com/2014/03/22/simple-api-with-sinatra-on-heroku/
bundleしたときにpgがinstallできなかったので、下記を参考にした。
Can't find the PostgreSQL client library (libpq) - からくりがてんこ
bundle exec ruby app.rb
bundle execを冒頭につけないと、bundle installしたgemを読んでくれないので気をつける。
undefined method `join' for
sinatraのバージョンが古いようだった。gitリポジトリからgemを取ってくるように書き換えた後に、bundle install。
NoMethodError: undefined method `join' for #<String:0x007f62c3e6fb90> - Rack 1.6.0 · Issue #951 · sinatra/sinatra · GitHub
unable to open database file
SQLite3::CantOpenException at /articles
unable to open database file
というエラーが出た。
・パーミッション変更
今回はディレクトリに入れていなかったので、変更する必要がなかったかもしれないが、development.dbに変更。
SQLite3でハマった点まとめ | gam0022.net
・db呼び出しコードを変更
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'] || 'sqlite3://localhost/development.db')
修正前が上のやつ。
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'] || 'sqlite3:development.db')
修正後。これで動いた。かなり悩んだ。どうしてこれで動くのかはわからないww
http://localhost:4567/articlesにアクセス
0,aaa,http://news.netkeiba.com/?pid=news_view&no=96692 1,bbb,http://news.netkeiba.com/?pid=news_view&no=96716 2,ccc,http://news.netkeiba.com/?pid=news_view&no=96715
このような競馬の記事を取得することを想定したcsvを作成。
これをsqliteに移行し、/articlesにアクセス。
{"articles":[{"id":0,"title":"aaa","url":"http://news.netkeiba.com/?pid=news_view\u0026no=96692"},{"id":1,"title":"bbb","url":"http://news.netkeiba.com/?pid=news_view\u0026no=96716"},{"id":2,"title":"ccc","url":"http://news.netkeiba.com/?pid=news_view\u0026no=96715"}]}
jsonが返ってきた!
heroku toolbeltのインストール
The Heroku CLI | Heroku Dev Center
あとは参考リンクを読みながら進めるとherokuにデプロイできて、指定urlにアクセスするとjsonが返ってきた。