そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

Sinatra@Heroku とりあえずHerokuで何か動かしたい人向けメモ

ここのところ僕がRubyやらRailsやらを勉強しているのは、何を隠そうひとえにHerokuで何かを動かしてみたいからだったりする。
Heroku | Cloud Application Platform


Herokuとはなんぞや?という方のために説明すると、無料から始められるウェブサービスの公開のためのプラットフォームで、元々はRails用だったのだけど今ではいろんな言語を動かせたりする。
↓このへんが詳しい。
FAQ:Herokuってなに?メリットは? - builder

HerokuではじめるRailsプログラミング入門

HerokuではじめるRailsプログラミング入門


Heroku: Up and Running

Heroku: Up and Running

  • 作者: Neil Middleton,Richard Schneeman
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2013/09/22
  • メディア: ペーパーバック
  • クリック: 2回
  • この商品を含むブログを見る



そんなわけで乞食エンジニア的には「無料」という部分にどうしようもなく惹かれはしたものの、「さてどうすれば使えるのかな?」と探してみると意外と初歩向けな資料が少なく(もしくは古く)、マニアックな方法論は結構あるけど「とりあえず動かしてみたい!」人向けなのが無かったのでこの記事を書いてみた。


環境設定
とは言えまじめに「〜をインストールする」みたいな所から始めるのはかったるいので↓を参照のこと。
http://ppworks.hatenablog.jp/entry/2012/03/04/141951


ざっくり要素だけ抜き出すと

  • Herokuのアカウント作る(あたりまえ
  • Ruby使えるようにする
  • git使えるようにしておく

そんでもってSSHの鍵やらなんやらを設定してターミナルからherokuにログインできればOK。


上の記事がなかなか親切で、僕もgitもRubyもよくわかない状態でもherokuへデプロイしてRailsが動くところまではもっていけたんだけど、フレームワーク使うほど大きいものを作る気もなかったし、動かすために具体的に何が必須で何が要らないのか正直よく理解できていなかった。




Sinatra良いね!
さて、先にも書いたが「何がしたいでもないけどとりあえず動かしたい」程度のテンションだとRailsはちょっと大げさすぎる。
色々覚えるべきことが多いってのもあるし、無料の貧弱な環境で動かくのはちょっとしんどい。


そんな中で見つけたのがSinatraというミニマムなフレームワーク
前の記事で書いたPerlのMojulicious::Liteみたいに1ファイルから使用できる。
(どっちかっていうとSinatraの方が先にあって作られたらしいけど。CakePHPといいMojoliciousといい、僕はポロロッカ現象が多い。)



Ruby関係の書籍やサイトを探してもRailsばっかりなのだけど、Rubyがある程度書けるようになった後で何かちょっとしたことやりたいだけならSinatraの方が気楽で良いと思う。

Sinatra: Up and Running

Sinatra: Up and Running

  1 # -*- coding: utf-8 -*-
  2 require 'rubygems'
  3 require 'sinatra'
  4 
  5 get '/' do
  6   erb :index
  7 end

5〜7行目が"/"がリクエストされた時の動きなので、そこにやりたい処理を書けば良い。
6行目は同じ階層のviewsというディレクトリの中にある「index.erb」というテンプレートを呼ぶ意味。
ちなみにcssやjsなどは同階層にpublicというディレクトリを作ってそこに入れておけば良い。

詳しくは↓
Sinatra: README (Japanese)





Sinatraで作ったサービスをHerokuで動かすには
さて本題。
とりあえずSinatraでそれっぽいものが作れるようになったら


1.作業ディレクトリを作成して「heroku create アプリ名」とコマンドを叩く。
ちなみにアプリ名は後からでも変更がききそう。


2.作業ディレクトリを作成したSinatraのコードを「app.rb」とでも名前を付けてを放り込む。


3.「Gemfile」というファイルを作成して↓みたいに使ってるgemを書き込んどく

  1 source :rubygems
  2 gem 'sinatra'


4.「config.ru」という駆動用の設定ファイルを作成する。(これを最初に知りたかった)

  1 require './app'
  2 run Sinatra::Application

記事によってはここのrequreが単に"app"として載っているものもあるけど、現バージョンだと相対パスで"./app"じゃないとダメらしい。
ちょっとした落とし穴。


5.一応「bundle install」と叩いて必要なGemを入れておく


6.「git add .」「git commit -m コメント」ってな具合にコミットして・・・


7.「git push heroku master」で出来上がり



あとは「heroku open」でページを開いてみたり、「heroku logs」でログを眺めてみたり、「heroku maintenance:on/off」でメンテナンスモードにしてみたりすれば良い。



知ってしまえば何のことはない話なのだが、Herokuってつまりはジオシティーズ的な共通のサーバのディレクトリ貸しではなく、あくまでウェブサービスを動かすプラットフォームを提供しているわけだから設定ファイルとかが必要なんですよ、ということをおさえておきたい。




そんなわけでTwitterAPIを使ってみたくて作ったのが↓
意識スカウター

そのうちTwitterAPIについても書きたいと思う。



あとAmazonAPIを使った実用的なものも書いてみたいところ。

ポケット詳解 WebAPI辞典 (Pocket詳解)

ポケット詳解 WebAPI辞典 (Pocket詳解)