2011年10月21日 #ruby #sinatra

目的

Sinatraで静的なhtmlファイルをrenderする方法です。

現状

Sinatraでは色々なビューテンプレートをレンダリングできます。Haml、Erb、Sass、Markdown、CoffeeScript…が対応されていますが、HTMLは対応してないようです。html :indexで書いてもダメですね。

Sinatraのビューテンプレート

解決方法

File.readでファイルとして読み込むことですね。Sinatraはデフォルトの設定だとpublicフォルダ内のものをassetsとするそうです。

でちょっとリファクタリングしてhtml :indexのシンタックスでいけるようにしました。

参考

http://stackoverflow.com/questions/2437390/serving-static-files-with-sinatra

2011年6月23日 #ruby #sinatra #memcached #heroku

昨日の記事http://www.kinopyo.com/blog/a-sintra-app-to-grab-funny-images-from-a-github-threadにも簡単に述べましたが、DalliはHerokuでお勧められているMemcachedのGemです。正確にはpure ruby memcache-clientです。

インストールと使い方をGistで公開しています。

参考サイト:
http://devcenter.heroku.com/articles/memcache
https://github.com/mperham/dalli

スレット経緯

bumblebeeというgithubのプロジェクトにinstall.shというファイルがありますが、
実行するとrm -rf /usrのコマンドで/usrが全部削除されることで大騒ぎになったようです。
githubのスレット

bumblebee rm -rf :usr

一個スペースが多かったですね。。

でコメントに上がっている画像がとても面白かったので、それをNokogiriを使って拾うrubyコードを書きました。プログラマのヒューモア満載の画像ですね。

Sinatra + Nokogiri + Herokuで作りました、キャッシュはdalliというgemを使いました。

成果

下記iframeで表示しています。urlはhttp://kinopyo-omgmyusr.heroku.com

ソースコード

githubに上げています。
https://github.com/kinopyo/Funny-Images-in-bumblebee-rm–rf–usr-thread

参考になったリンク:
http://devcenter.heroku.com/articles/memcache

2011年5月24日 #ruby #sinatra

Sinatra使って二日目ですが、サーバーを再起動しないと修正したコードが反映されないことに気づきました。これは不便なので、改善する方法を紹介します。

shotgunというgemを使えばOKです。インストールし、ruby -rubygemsではなくshotgunでサーバを起動します。

$ sudo gem install shotgun
$ shotgun myapp.rb
== Shotgun/WEBrick on http://127.0.0.1:9393/
...

これでサーバを再起動せずにホットデプロイができるようになります。

他にもSinatra::ReloaderSinatra::Reloaderが公式サイトで紹介されていますが、shotgunは一番簡単だそうです。

参考サイト:
http://stackoverflow.com/questions/5684266/can-i-do-sinatra-program-without-restart-server
What happened to reloading in Sinatra

2011年5月23日 #mac #ruby #環境構築 #sinatra

Sinatraを試したところこのようなエラーになりました。

ruby -rubygems myapp.rb
no such file to load -- ubygems (LoadError)

ググッてみたらやはりPATHが間違ったっぽいです。
Macportでrubygemsをインストールすることで解決できるそうです。
その後はgemを再度インストールする必要があるらしいです。
操作の流れ:

#パスの確認
which gem
/usr/bin/gem

sudo port install rb-rubygems
...
# Terminal再起動
# パスの確認
which gem
/opt/local/bin/gem

sudo gem install sinatra

一旦はこれで解決です。

参考になったサイト:
http://d.hatena.ne.jp/holypp/20110319/1300556202
http://d.hatena.ne.jp/Kuna/20090315/1237121262