こういう感じのアプリケーションがあったとします。 で、この例だとまったくファットじゃないんだけど、Controller がファットになってきてしまった場合に、いい感じに分割したくなることもありますよね。 ということでとりあえずこうしてみた。 各クラスが Sinatra::Base を継承するではなくて、Base を設けてそれを継承するようにしているのは、各クラス内でそれぞれ before を書きたくなかったからです。 が、このように書いてしまうと、リクエストパスによっては 1 回のリクエスト中に before 内の処理が複数回実行されてしまいます。(実際に before に適当に p 123 とか書いて起動して、アクセスしてみるとわかる) それだと最悪なので、最終的にこうした。 ルーティングを config.ru に書きたくなかったので、定数化して呼び出すようにしています。 参考 Sina
sinatraからRailsへ さて皆さんご存知のProconist.netですが、これはsinatra applicationとして作られました。 そしてsinatra applicationは、いろいろいい感じにしていくとRailsに近づいていく、というのはよく知られたことです。 じゃあRailsにしちゃえということで、しました。 unasuke/proconist.net: The repository links for fighter of KOSEN PROCON. 移行期間がちょうどプロコン本戦とかぶっているので、これもプロコンです。 sinatraの構成 sinatraは、こういう構成で動作していました。 sinatra SQLite unicorn nginx さくらのVPS こいつをRailsに移し替えるわけです。 ただRailsにするだけではない とはいえそのまんまロ
Sinatraを使ったPJ*1で、あまりにも一つのファイルに色々突っ込みすぎていたので、ファイル分割をメインとしたリファクタリングを実施した。 その際の備忘録。 ディレクトリ構成は長くなるので割愛。 やったこと バッチファイル cronで実行するバッチファイルがappディレクトリ直下に置かれまくっていたので、app/batchディレクトリを作ってそこに全部つっこむ バッチファイル用の独立したライブラリファイルがあったので、新設するapp/src/modelsディレクトリに統合 バッチファイル内に独立したクラスが書かれていた💢ので、それもapp/src/modelsディレクトリに移行(バッチファイルは処理のみを書く) モデルファイル appディレクトリ内に2~3のモデルファイルが散逸していたため、app/src/modelsディレクトリを作ってそこに全部つっこむ モデルファイルが肥大化(一
なんかどうも OmniAuth を使おうと思ったらまず Session を有効にしろやと言われたり言われなかったりするので久しぶりにがっつりコードリーディングしてみた。 以下のバージョンで確認した。 Sinatra 1.4.7Rack 1.6.4OmniAuth 1.3.1まとめrack middlewareは記述順に依存する 具体的には OmniAuth の前に Rack::Session を use しておかないとダメなぜなら OmniAuth は session を利用できる前提で書かれているからrack middlewareの組み立てられ方 より正確にはアプリケーション本体をいちばん内側に包むたまねぎ構造sinatraのset :sessions, trueはどこに書いてもよい set :sessions, true は書く位置を自由にできるが、use Rack::Session:
RubyRuby Authentication: Secure Your Rack Application with JWTJSON Web Tokens (JWT) provide an easy way to add authentication to Ruby apps. Learn all about how to secure your Rack API! Early on in my career, when I was a wee little junior dev, learning Ruby on Rails and looking to impress, I came across an issue that is all too common these days. How do I authenticate a request with an API when th
sidekiqは、複数のjobを非同期実行させることができるrubyライブラリです。割と簡単にjobの並列処理がrubyで書けて、便利そうです。今回、年末から年始にかけて、ゆる〜くsinatraとsidekiqを組み合わせて、非同期型のjob実行Web APIを作ってみたので、まとめておきます。 背景 GUIしか存在しない、いにしえのツールをWeb API化(poltergeistを使ってブラウザ操作部分を自動化し、sinatraとsidekiqを組み合わせてAPIを作成)したかったからです。 なお、今回作ったものはGitHubにあげました。 github.com 開発環境 今回Dockerも触ってみたかったので、ローカル開発環境をDockerで作りました。 OS X 10.11.1 (15B42) Docker version 1.8.2, build 0a8c2e3 docker-ma
By zzak on Monday, May 15, 2017 Today, I’m pleased to FINALLY announce that Sinatra 2.0 was released! If you haven’t been following along, the major version bump includes a lot of changes significant to the future of the project. In this post, you will see the full details including what’s new, what’s gone, and everything packed into the two point oh release. Before we begin, I have to thank every
Nginx Proxied to Unicorn¶ ↑ Nginx and Unicorn combine to provide a very powerful setup for deploying your Sinatra applications. This guide will show you how to effectively setup this combination for deployment. Installation¶ ↑ First thing you will need to do is get nginx installed on your system. This should be handled by your operating systems package manager. For more information on installing n
sinatraをサブディレクトリで動かしている時なんかに必要 http://localhost:4567/hello/world にアクセスしたときのenvをppした {"HTTP_ACCEPT"=> "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", "HTTP_CACHE_CONTROL"=>"max-age=0", "HTTP_HOST"=>"localhost:4567", "SERVER_NAME"=>"localhost", "rack.url_scheme"=>"http", "HTTP_USER_AGENT"=> "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleW
エクスキューズとか 正直な話をすると、Webフレームワーク自体に関する興味は以前に比べて失われてきているので、最新のSinatraの細かいコミットまでは追っていない。 だが、2年強ほど Sinatra/Padrino 界隈を追いかけてきて得た知見と言うか考えについてまとめるのは一定の価値がある、少なくとも自分に取っての価値は非常に大きいと思うのでここに書いていきたい。 副次的には、ミスコンセプトによってSinatraを利用して、結果必要の無いイメージの悪化を招く事態を一件でも減らせればと思う。 Sinatraはmicroframework、あるいは「フレームワークではない」 公式の説明にある通りである。 具体的にどういうことかと言うと、Sinatra単体ではウェブサービスに必要な要件を満たさないかもしれないと言う話である。Sinatraが持っていないものについては、Sinatra以外の場所
ローカルで動かしていたSinatraをさくらvpsで動かそうと思ったら、アクセスしても繋がらない問題に出くわしました(;´д`) 検索しても意外と情報が少なかったのでメモ残しときます。 症状 Sinatraを使ったコードを実行すると、デフォルトだと4567番ポートで立ち上がるのですが、アクセスしても繋がらない!! $ bundle exec ruby hoge.rb [2013-05-17 23:58:37] INFO WEBrick 1.3.1 [2013-05-17 23:58:37] INFO ruby 1.9.3 (2013-02-06) [x86_64-linux] == Sinatra/1.4.2 has taken the stage on 4567 for development with backup from WEBrick [2013-05-17 23:58:37]
このサイトを Sinatra で書き直した。 もともと Rails で書かれていたのだが、この規模のサイトに使うには Rails はいかにも重量級すぎるので。 Sinatra ならば 1 ファイルで完結する。 Sinatra で開発する時に、 O/R マッピングには Sequel とか DataMapper とかが使われることが多い印象があるのだが、今回は ActiveRecord3 を使ってみた。 ActiveRecord3 はメソッドチェインでクエリを組み立てることが出来て非常に便利だし、 Rails3 でこのサイトを作った時のコードを使い回せる。 従来では「Rails を使わない理由」の中で最も大きなものに「ActiveRecord と密接に接合しており他の DBI を使いたくても使えない」というものがあったと思うが(つまりそれだけクソだった)、 ActiveRecord3 は Ru
View at: http://localhost:4567 The code you changed will not take effect until you restart the server. Please restart the server every time you change or use a code reloader like rerun or rack-unreloader. It is recommended to also run gem install puma, which Sinatra will pick up if available. Routes In Sinatra, a route is an HTTP method paired with a URL-matching pattern. Each route is associated
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く