#ruby #sinatra

目的

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

現状

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

Sinatraのビューテンプレート

解決方法

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

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

参考

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

#ruby #heroku #memcached #sinatra

昨日の記事https://kinopyo.com/ja/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

#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

#ruby #mac #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