続編書いた → http://qiita.com/izumin5210/items/cbaa99231c031cec8b07 コード変更するたびに再起動は超面倒なので… Sinatra::Reloaderを使うといいらしい. つかいかた 導入 とりあえずsinatra-contribを入れる.
![【Sinatra】オートリロードしてほしい - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/5c55bbdea009d509a07cef5c14c03ed5a8d84166/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgwJTkwU2luYXRyYSVFMyU4MCU5MSVFMyU4MiVBQSVFMyU4MyVCQyVFMyU4MyU4OCVFMyU4MyVBQSVFMyU4MyVBRCVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MSU5NyVFMyU4MSVBNiVFMyU4MSVCQiVFMyU4MSU5NyVFMyU4MSU4NCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjRlZWJlNzVlMjYxZjNiNmRmYzk1YzYzMmYxNTg1MWY%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaXp1bWluNTIxMCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MzEwZjExZWRjYmQwNGVkMDg1MGZkYTI1N2EyNDViNGY%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dcb3a79518354d07257e2ced07e0e295d)
Sinatra はじめて触ったんだけど、ログをファイルに書く方法がなかなかわからなかった。 ログを、ただファイルに書きたいのです。 結論 独自のミドルウェアで env['app.logger'] を設定し、アプリケーションのloggerメソッドをオーバーライドする。 参考 ruby - Use Rack::CommonLogger in Sinatra - Stack Overflow これに書いてある通りだった。面倒くさいー。 サンプル 以下でログがファイルに出力される。アクセスログとアプリケーションログを別のファイルに出力することもできる。 config.ru Loggerを作ってミドルウェアに渡す。 require 'logger' require 'sampleapp' require 'applog' logdir = File.dirname(__FILE__) + "/log
rails編は以前書いたのでsinatraでやってみる 用途としてはDBとかいらないスタティックなサイトの構築で、でもhtml、css、jsを生で書くのとか耐えられない。phpはマジ勘弁みたいなときにこうしてますよって感じのことを書きます。 (bundlerの使い方ってゆうかrubyでのweb制作全般って感じですね…) まず適当な場所にプロジェクトのディレクトリを作ります。 hogeとかもアレなんでポートフォリオにしときます。 $ cd ~/Web $ mkdir portfolio $ cd portfolio でプロジェクトのルートでGemfileをつくる $ bundle init Writing new Gemfile to /Users/kozo/Web/portfolio/Gemfile 中身はこんな感じだから... $ vim Gemfile # A sample Gemfi
2012/7/16 10:00 指摘によりsinatra-contribを使う旨を追記&修正 未だにshotgun使ってた。 参考: モノクロームの中: sinatra (2) - オートリロード - Sinatra::Reloader (part of Sinatra::Contrib) gemをインストール % gem install sinatra-contrib Classicスタイル require "sinatra" require "sinatra/reloader" if development? Modularスタイル require "sinatra/base" require "sinatra/reloader" class MyApp < Sinatra::Base configure :development do register Sinatra::Reload
SinatraっていうかRackのミドルウェアでありました。 sudo gem install rack_csrf# app.rb require 'rubygems' require 'sinatra' require 'rack/csrf' get '/' do @msg = 'Hello World' erb :index end post '/' do @msg = 'Hello CSRF' erb :index end configure do set :app_file, __FILE__ use Rack::Session::Cookie, :secret => 'change me' use Rack::Csrf, :raise => true end helpers do def csrf_token Rack::Csrf.csrf_token(env) end def
Sinatraはとてもシンプルなフレームワークです. 例えばHello Worldならば次のコードだけでできあがりです. 魔法のようにかんたんですね! しかし「どうしてこれで動くのか」を知っている人は比較的少ないのではないでしょうか. 気になるSinatraのソースコードを読んでみましょう. Classic Style と Modular Application ところでSinatraにはクラスを使ったModular Applicationという書き方があるのを知っていますか? Hello WorldはModular Applicationではこのようになります
RESTful API の作成に特化したマイクロフレームワーク grape の存在を知ったので調査してみる事にしました。API の実装 に Rails の ActionController は重厚すぎる、Sinatra は軽いけど手間がかかる。。。という中で作られたこのフレームワーク、はたしてその実力は… grape の特徴# grape の特徴は概ね以下の通りです。grape 自体が Rack アプリケーションなので Rails3 に組み込むことが出来ます。というよりは組み込んで使うのが前提のようです(勿論単体でも動きます)。 Rack アプリケーション Sinatra ライクな DSL 自動で JSON にシリアライズ(#serializable_hash または #to_json が存在すればOKみたい) grape を使ってみる# 特徴を掴んだところで、実際にインストールして使って
Sub URIで動かすとは? ドメイン単位ではなく、ドメイン配下のディレクトリをルートとして環境を構築する場合の話です。 例えば、 http://example.com/ をアプリケーションのルートとする場合ではなく、 http://example.com/hogehoge/ の hogehoge/ をアプリケーションのルートとして扱う場合です。 何がいいたい? ぶっちゃけ、ドメインを取るまでもない sinatra アプリを、既存のドメイン内で動かしたいんだよってこと。 ディレクトリ構成 設定前に、事前にディレクトリ構成を書いておくと Sinatra アプリ /path/to/cgi-bin/sinatra_app/public /path/to/cgi-bin/sinatra_app/tmp /path/to/cgi-bin/sinatra_app/config.ru /path/to/
SubURI での設定にした場合 sinatra アプリを Passenger で「Sub URI」で動かす(2) - @sugamasao.blog.title # => ”コードで世界を変えたい”で最後に書いた事に対する回答になるのだけれど。 sinatra アプリを単独で動かす場合(WebRick 等で動かした場合)と SubURI の設定をした Apache 等で動かした場合で、PATH_INFO が違うため静的コンテンツへのリンクに誤差が生じてしまいます。 img/hoge.png*1 のような相対パスで設定した場合は、sinatra アプリ内のパスから探してほしい。 そんな時どうするか passenger の環境構築で作った、public ディレクトリを使用する。 正確には、sinatra アプリのソース内に、以下のように既述する。 set :public, File.dirn
誇張表現でもなく、サービスの利用開始の手続から公開まで、本当に 5 分以内でできてしまう。。 Heroku Heroku は、“instant ruby platform” と言われるもので、ホスティングサービスではあるが、“準備不要なデプロイ環境” である。 ローカルで作成した Ruby アプリケーション(Rails、Sinatra、Merb etc)をコマンド一発で公開できるプラットフォームを提供する。 そのインターフェイスも素晴らしいが、サービスの公開にあたり、サーバ側のシステム管理作業を行う必要はなく、また、自動的にスケールしてくれる仕組みも提供している点が素晴らしい。 存在自体は以前小耳に挟んでいたのだが、 Hosting Radiant and Spree - Radiant CMS: Dev Google グループ で触れられていたの読み、試してみることにした。 Heroku
SinatraでSessionを使う簡単なサンプルです。手順は以下。 「set :sessions, true」でセッションを有効化。(このへんに説明があります。) 後は、「session[<キー>]」でセッションの値にアクセス可能です。 ちなみに、sessionはSinatra::Helpersモジュールで定義されているメソッドみたい。 require 'rubygems' require 'sinatra' # セッションを有効化 set :sessions, true get( "/" ) { # sessionメソッドでセッションにアクセスできる。 session[:value] = 0 unless session[:value] # 初期値はnilなので初期化 "count : #{session[:value]+=1}" } 起動して、以下のURLにアクセス。 http://
テンプレートに変数を埋め込む方法を調べてみた。 バージョン (2012/09/26 追記) Hamlのバージョンは 2.2.2 を使っています。 コントローラ require 'rubygems' require 'sinatra' get '/:id' do @id = params[:id] @items = ['red', 'green', 'yellow'] haml :index end テンプレート !!! XML !!! %html{html_attrs('ja')} %head %title= @id %body %h1 Hello, @id %h1 Hello, #{@id}! %h1= "Hello, #{@id}!" %h1(class = @id)="Hello, " + @id + "!" %h1{:id => @id}= "Hello, ", @id, "!"
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
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はじめに SinatraはRubyで記述されたWebアプリケーションを素早く、簡単につくるためのDSL(ドメイン固有言語)です。 すでに第7回で、原悠さんにより「小規模Webアプリのためのフレームワーク、Sinatra」というかたちで紹介されています。 簡潔な文法で、高い表現力を持つSinatraは、アメリカのRubyコミュニティや企業を中心に、瞬く間にユーザを増やしました。また、Rubyという一言語に留まらず[1]、Sinatraを模したフレームワークが多く作られている現状からも、SinatraはWebアプリケーション開発そのものにも大きな影響を与えたと言えます。 最近ではここ日本でも、個人利用を中心に、そこかしこでSinatraを使って開発をしている、という話を聞くようになりました。筆者自身、1ユーザとして現在業務で利用しており、1年前は知る人ぞ知る存在だったSinatraは、実際に
このサイトを Sinatra で書き直した。 もともと Rails で書かれていたのだが、この規模のサイトに使うには Rails はいかにも重量級すぎるので。 Sinatra ならば 1 ファイルで完結する。 Sinatra で開発する時に、 O/R マッピングには Sequel とか DataMapper とかが使われることが多い印象があるのだが、今回は ActiveRecord3 を使ってみた。 ActiveRecord3 はメソッドチェインでクエリを組み立てることが出来て非常に便利だし、 Rails3 でこのサイトを作った時のコードを使い回せる。 従来では「Rails を使わない理由」の中で最も大きなものに「ActiveRecord と密接に接合しており他の DBI を使いたくても使えない」というものがあったと思うが(つまりそれだけクソだった)、 ActiveRecord3 は Ru
軽量フレームワークのsinatraが熱い。 確かに、個人で作ってるサイトではRailsは設定が大変だし、動いてももっさりだし。ということで、さくらのレンタルサーバでsinatraを動作させてみました。 オフィシャルページ(Sinatra)にはcgiで動作させるためのドキュメントが一切ないのには参りましたね。 インストール gem install で一発インストールできますが、デフォルトだとsinatra-0.9.2, Rack-1.0.0 がインストールされました。 ですが、Rack-1.0.0だと不具合があるので、別途Rack-0.9.1をインストールしておきます。 gem install sinatra gem install rack --version='0.9.1' Rackの設定 Rackはwebサーバの違いを吸収してくれるライブラリで、こいつのおかげでSinatraはいろんな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く