ホーム > コンピューター > HerokuでSinatra

HerokuでSinatra

先日のFLOSS桜山でeightballさんが、Herokuのことを紹介していました。
しばらく触っていなかったのですが、いつの間にかシステムが変わっていたんですね。
でも、わかりやすく導入部分を教えてくださったので、私も再び使い始めることができました。感謝。

以前、HerokuはRuby on Railsの無料のホスティングサービスとして紹介されていました。Ruby on RailsはPHPのように安価で導入できるわけではなく、サーバー丸ごとかVPSで動かす他ありませんでした。

CGIで動かすこともやろうと思えばできますし実際にやっていますが、Ruby on Railsの初期化をCGIが呼ばれるために実行しているのは、コストが高く遅いので使い物になりません。

実際にRuby on Railsでつくったシステムのテスト用などで、Herokuを使ってみました。そのときのプログラムは、現在 Heroku Gardenになっています。
Heroku はGitを使ってDeployして公開できる実用サーバーですが、Heroku GardenはWeb上で直接Railsプログラムを編集できるサーバーで少し性格が異なるようです。

Herokuだけではないのですが、以下はsinatra 0.9.2でアプリケーションをつくるときの便利コードです。

サーバーをwebrickに指定します

Rack::Handler.register 'Webrick', 'Rack::Handler::WEBrick'

sinatra0.9.2では、ソースを自動リロードしませんが、それを実現する方法です。
開発環境だけでいいのですけれども。


class Sinatra::Reloader < Rack::Reloader def safe_load(file, mtime, stderr = $stderr) puts "Sinatra::Reloader#safe_load called" #if file == Sinatra::Application.app_file ::Sinatra::Application.reset! stderr.puts "#{self.class}: reseting routes" #end super end end [/ruby] CGIで使うときと、サーバーとして立ち上げるときをCGI_flagという変数を使って制御しています。 [ruby] CGI_flag = false if CGI_flag set :run, false set :environment, :cgi disable :logging else set :server, 'webrick' end #最後に Rack::Handler::CGI.run Sinatra::Application if CGI_flag [/ruby] CGIでは' 'が呼ばれ、Rackで起動した場合は'/'が呼ばれるので、それを共存する方法 [ruby] get '/?' do end [/ruby] そして、HerokuはWindowsで作ったアプリケーションでも大丈夫だった。 Windows版のGitをインストールする。 SSH鍵を作る puttygen.exeで作った鍵は駄目で、Linuxで"ssh-keygen -t rsa"で作ります。 作ったパブリックキーは C:\Documents and Settings\ユーザーID\.ssh\ に入れます。 Windowsでは [shell] gem install heroku [/shell] [shell] $ git init $ git add . $ git commit -m "initial commit" $ heroku create $ git push heroku master [/shell] 更新時は以下を実行します。 [shell] $ git add . $ git commit -m "コメント" $ git push heroku master [/shell] (間違っていたらごめんなさい) Herokuは容量が5MBまで無料で、sinatraでデータベースが小さければ大丈夫かもしれません。レスポンスはよかったです。 アップしたアプリケーションは、Google Calendarをアレンジしたものです。 このページが参考になりました。 http://d.hatena.ne.jp/emergent/20090525/1243180042

カテゴリー: コンピューター タグ: