- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby/sinatra

はじめに Edit

Sinatraはデフォルトだとどうも開発モードでも自動リロードしてくれないので、ファイルを編集→サーバー再起動、とても面倒くさくてやってらんない!のでなんとかする方法の模索。

sinatra 1.0、Windows Vista、google-appengine (0.0.11)な環境で確認しました。

forkが使えるUnix系だとshotgunが定番らしいですが、WindowsやjRuby環境だと使えないのでどうしようかな?と。

参考:Reloading Sinatra app on every request on Windows - Stack Overflow
↑「お前らWindowsで自動リロードする方法教えろよ」な話題

うまくいってません orz→うまくいったよ

Sinatra::Reloaderを使ってみる Edit

Sinatra::Reloaderを使ってみます。

まずはインストール

$ gem install sinatra-reloader
Successfully installed backports-1.16.6
Successfully installed monkey-lib-0.4.1
Successfully installed sinatra-sugar-0.4.1
Successfully installed sinatra-advanced-routes-0.4.1
Successfully installed sinatra-reloader-0.4.1
5 gems installed

ここまではOK。

あとは、config.ruなんかに configu.ruからrequireしているメインのファイルなんかに、

1
2
3
# reloader
require "sinatra/base"
require "sinatra/reloader" if development?

みたいに書いておけばOKっぽいです。
view(erb)が再読み込みされないと書いていましたが、問題ないようです。

appengine-jrubyの場合はさらに以下の設定が必要です。

appengine-jrubyの場合 Edit

appengine-jruby環境の場合、gemfileに以下を追記してsinatra-reloaderを使うことを知らせることも必要となります。
(あとはdev_appserver.rb . でサーバー起動すれば自動で組み込まれる)

gem "sinatra-reloader"

あとこのままでは動かない場合は、Sinatraがdevelopmentモードになってない可能性があります。そちらも参照して下さい。


No comment. Comments/Ruby/sinatra/自動リロードする方法?

Name:

}}


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-04-23 Fri 16:30:31 JST (3517d)