私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) parrotstudio
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) parrotstudio
注:rack 1.3.3以前だと落ちます。rack 1.3.4以上にアップデートしましょう。 Sinatra 1.3でstreamヘルパーが追加された。 require "rubygems" require "sinatra" get '/' do stream do |out| out << "It's gonna be legen -\n" sleep 0.5 out << " (wait for it) \n" sleep 1 out << "- dary!\n" end end get '/normal' do sleep 1.2 "normally response" end 全部の処理が終わるまで待って一気にレスポンスを返すのではなく、out << "string"のように逐次レスポンスを返す。なお、これの実装はRails 3.1で追加されたものやPHPのデフォルトの挙動、Tw
Goals For every future Sinatra release, have at least one fully compatible release High code quality, high test coverage Include plugins people usually ask for a lot Included extensions Common Extensions These are common extension which will not add significant overhead or change any behavior of already existing APIs. They do not add any dependencies not already installed with this gem. Currently
◆ [Ruby][Sinatra] SinatraでRack::Csrfの例外をハンドリングする SinatraでのCSRF対策にはRack::Csrfが使えますが、普通に use Rack::Csrf, :raise => true とか書いただけでは、errorハンドラで例外を捕捉・処理できません。production環境ではCSRFチェックに引っかかると403応答+真っ白な画面になるのですが、false negativeの可能性が0ではないので、何らかの処理はしておきたいところです。 というわけで、試行錯誤の結果行き着いたのが以下のようなコード。もっと良い方法があったらコメントください。 require 'rubygems' require 'sinatra' require 'rack/csrf' require 'haml' use Rack::Session::Pool use
例えばFacebook上でのキャンペーンで、「Facebookページのいいね!ボタンを押してくれた方全員にもれなく壁紙プレゼント」などを行う場合に、いいね!ボタンが押されたかどうかを取得して、その値でページを振り分ける必要がある。そのやり方についてのメモ。 今回のはHeroku+Sinatraの組み合わせで、特にFacebook用のライブラリなどは使用していない。ざっと調べた感じだと、PHP+Facebook SDKを使うのが一番簡単そうに見えたんだけど、SDKがPHP5.2以上必要っぽくて使えなかった。ちなみに、Facebook上でのキャンペーンや懸賞を行う場合の利用規約については、以下のページが詳しくて参考になった。 やっちゃっていませんか?Facebookの規約違反 これを読むと、かなり厳しい感じ。 予備知識 予備知識として、Facebookページについて以下のことを押さえておく必要
ちょっと今までやってないSinatraとHamlを試してみようと思い立ち、何気なくOmniauthを使ってTwitterで認証する部分のみを作ってみました。怖いくらいあっさりできたのでレポートしてみます。 下準備1 Ruby1.9系のインストールをしておいて下さい。 Ubuntu11.04の場合を書いておくと sudo apt-get install make gcc wget libssl-dev zlib1g-dev libreadline-dev libxml2 libxml2-dev libxslt1-devを行い http://www.ruby-lang.org/ja/downloads/からruby 1.9.2-p180のtar.gzのリンクをコピーしてwgetで取得します。configureとmakeとmake installでインストールして下さい。 その後 sudo ge
なんか twitter でそういう声があったのでざっくり試したよ。 Rack::URLMap を使う なんと! Rack::URLMap は、 env["PATH_INFO"] をよしなにしてはくれません。/sub サブディレクトリにマウントしたアプリケ~ションにも、 /sub が付いたまま渡ります。なので、自分で削除する Rack Middleware 書いたった。 app1.rb: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 require 'rubygems' require 'bundler/setup' Bundler.require class SubApp < Sinatra::Base
Facebook Graph APIの実験の為に、いろいろなサンプルアプリを作ったりしています。 本番用のアプリを作るときはRailsを採用したりするのですが、簡単にAPIを試すだけのサンプルの場合は、Sinatraを使ったほうがサクっと作れて便利ですよね。 そんなときは、Ruby OAuth2 gemとSinatraを使うと、「Facebookアカウントでのログインの仕組み」を簡単に実装することが出来たりします。 今回は、ボクが普段使っているサンプルコードを紹介したいと思います。 本当は Rack::Session::Pool を使いたいのですが、shotgunと併用するとうまくセッションが効いてくれなかったりすることもあり、Rack::Session::Cookieで我慢しています。 https://gist.github.com/998545 require 'rubygems' r
module Foo module Helpers def bar 'unk' end end end こういうHelpersを helpers do include Foo::Helpers end こういう風に使ってた場合。 RSpec.configure do |config| config.include Foo::Helpers end describe Foo::Helpers do context 'bar' do it 'should return unk' do bar.should eql('unk') end end end Spec::Runner.configでincludeするとテスト出来る。 LokkaはSinatraベースなので同じようにHelpersのテスト書ける。でもRspecややこしいな。config.includeのとことか。とTest::Unit,
研究室の後輩にSinatraとhamlとjQueryを教えるために作ったテンプレートについて、ここにも書いておく ソースコード https://github.com/shokai/sinatra-template 実際動いているもの http://masui.sfc.keio.ac.jp/sinatra-template/ git clone git://github.com/shokai/sinatra-template.git ■Sinatraを何に使うか Sinatra+haml+jQueryが便利。 Railsと似てるけど、ちょっと違う。 個人的には Rails → HTMLのページをいっぱい作るのに便利 Sinatra → 画面遷移あまりしなくて、同じURLのままjsonのAPIをjQueryのajaxで取得して動的に表示を変えるwebページを作るのには便利 に感じる。 でもSi
「NoSQL データベースファーストガイド」(著:佐々木達也) という本を読んでるよ 各種NoSQLのひと通りの説明と それぞれにRubyを使ったサンプルがあって 僕のようなNoSQL知識ゼロ(NoKnowledge) の人にとってはとてもためになるよ 特にサンプルは各NoSQLの利用状況を想定して作られているから 実用的でうれしいよね NoSQLデータベースファーストガイド 作者: 佐々木達也出版社/メーカー: 秀和システム発売日: 2011/04/26メディア: 大型本購入: 8人 クリック: 859回この商品を含むブログ (29件) を見る その中に音楽視聴ランキングサイトの楽しいサンプルがあるんだよ それはGyaoの音楽ランキングに基づいて YouTubeから対応動画を取ってきてリスト表示するというものだよ 一度アクセスしたデータは memcachedを使ってサイト側で保持すること
ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! : melborne.github.com - Sinatraのサイトを開くとSinatraはDSLだと書いてある Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort: (SinatraはRubyで手早くWebアプリケーションをつくるためのDSLです) DSLというのはDomain-Specific Language つまり特定の目的に特化した言語のことだ 確かにSinatraはWebアプリケーションという 特定の目的のために作られたものだけれども それは言語じゃない
Warden はかなり好き(PadrinoというかSinatraでも使えるし)。でも、僕もDeviseはやり過ぎだと思う派だなあ 認証関連の画面遷移やURLが Devise の規約にぴったりハマるケースっていくらなんでも稀だと思うし、カスタマイズするとなると結構ソース追わないといけなくなって結局だるい… env['warden'] に一通り入ってるのは、少しかっこ悪いかもしれないけど便利。 認証とかリダイレクト処理とかガラケー対応とか、はアプリケーション本体ではなくRack Middleware で実現したいな~と言う facebook でこんなことをつぶやいた。 僕は Rack とその関連技術が凄く好きで、もっと勉強する人が増えてほしいと思っているのだが、何で好きなのかとかを整理してみた。 Good Stuff 結合度が低くなる。なので: Rackでとある機能(認証など)を実現すれば、そ
今日の悩みの種。なんとなく解決したけど、、、 Sinatraで同名の複数パラメータってどうやってとるんだろ。どっちかというとrackの話になってくるっぽいのだけど、 いくつか試したのにうまくいかない。。。 お試しコード。/sample?aaa=bbb&aa=bb&aaa=ccc みたいな感じでテスト get '/sample' do erb :sample, :layout => false end <hr> パターン1<br> <% message = "" params.keys.each do |k| message += "[#{k}][#{params[k].class}]<br>" end %> <%= message %><br> <hr> パターン2<br> <%= @env["rack.request.query_string"] %><br> <% message =
DotCloudというものを知ったので試してみた. Google App EngineやHerokuのようなWebアプリケーションホスティングサービスらしい. いろいろな言語が使えて,Common LispやSchemeに対応する可能性もあるとのこと. アカウントを作成できたので,Sinatraを動かしてみる. 環境を整える手順 1. アカウント作成 2. $ easy_install dotcloud 3. APIキーの登録 では,Sinatraを動かしてみる. 基本的にはドキュメント通り. $ dotcloud create bar $ dotcloud deploy -t ruby bar.foo $ mkdir -p ~/bar/foo $ cd ~/bar/foodeployに時間がかかることがあるようだがよくわからない…… ~/bar/foo の中はこんな感じ.publicとt
RubyフレームワークのSinatra の作者である Blake Mizerany 氏のインタビュー記事を見つけたので、翻訳してみました。タイトルは "How do I learn and master Sinatra?" 直訳すれば「Sinatra をマスターする勉強方法」です。 今回はRL blog 連載"Sinatraをマスターする方法" の最終回です。この連載は、有名なSinatra開発者の方々にRubyビギナーがどのように Sinatra を学習していけばよいかをインタビューします。 Satish>> Blake Mizerany, 自己紹介していただけますか? あなたのバックグラウンドに関して。 Blake>> 私は Heroku のマッドサイエンティストの一人です。Sinatra プロジェクトを2007年の9月に始めました。使えなかったり、使えそうなものが出来上がったりしまし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く