タグ

ブックマーク / blog.udzura.jp (32)

  • PHP のテストを Ruby で書く « blog.udzura.jp

    皆さん、楽しくテスト書いてますか~~~ 今日は、 rack-legacy を使うことで、 PHP のアプリケーションなのになぜか Ruby のコードでテストできて(受け入れテストのあたりですけど)、そうすると物の RSpec とかが使えて楽ですよ、と言う話をします。 rack-legacy とは。 まず、 Rack とは、 Ruby 製のウェブアプリケーション(Ruby on Rails、Sinatraなどをご存知かもしれません)とサーバ(Apache/Passenger、NginX、Lighttpdなどなど…)をつなぐ一種の規格です。 PerlPython にも似たような仕組みがあります。 ここで、 Rack::Legacy というミドルウェアを使うと、他の言語の CGI や、 PHP のアプリケーションが Rack の上で動かせます。 そして、 Rack の上で動くということは

    yuiseki
    yuiseki 2013/04/22
  • Ruby の便利ハック « blog.udzura.jp

    上記のようにすると、長ったらしい 「Float::INFINITY」 を短く「∞」と書けて、例えばテストケースのような場合にクソ楽になるのでおすすめです。 * * * Rubyのcase文で「〜以上」みたいな表現は可能でしょうか? ⬆みたいな回答をしていたのを急に思い出して書いてみた。Scなんとかlaと言う言語のようにUTF-8の文字列もメソッド名に使えますね(1.9から〜)。

    yuiseki
    yuiseki 2012/06/15
  • 検証したいRailsプラグインのメモ « blog.udzura.jp

    yuiseki
    yuiseki 2012/03/24
  • etckeeperのつかいかた(インストール、サブコマンド追加) « Coding Suicidal

    Time to Read 2分 etckeeperと言うものがあり、要するに /etc 以下をリポジトリにして変更履歴を管理してくれる、大変大雑把と言えば大雑把なソフトウェアがあります。大雑把ですが、結構便利です。 インストール 1 sudo aptitude install git-core etckeeper そしたら、 /etc/etckeeper/etckeeper.conf と言う若干くどい名前の設定ファイルを編集。 1 2 3 4 5 # The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" Gitの他、MercurialやBazaarなんかが使えます。ただし、Subversionなどのような、中央リポジトリが必要なバージョン管理システムは使えませんね(ローカルにコミットしていくため)。 VCSを決めたら: 1

    yuiseki
    yuiseki 2012/03/18
  • Mongrel2 で動かす(rackup する) Padrino « blog.udzura.jp

    ブログを移行してるんですが(実は)、頓挫気味なので普通にブログ記事を増やします。 今日は、懐かしのアイテム mongrel の進化版といわれる mongrel2 を、Rubyのために使います。サンプルとして Padrino を使いますが、この先を見ての通り rackup で走らせるんで、大抵の Ruby 製フレームワークでイケるって信じてます。 まず、 ZeroMQ を入れる GettingStarted を参照に。 ここで罠なんですけど、DebianとかUbuntuのレポジトリには普通に libzmq-dev が存在してしまっていますが、バージョンが若干古くて mongrel2 がコンパイル出来ません! 素直にソースインストールするしかない模様……(deb作ってもいいですけど)。 追記: Ubuntu natty や Debian sid のZeroMQのバージョンは、公式Getting

    yuiseki
    yuiseki 2012/03/06
  • Ubuntu desktop を使う際は入れているパッケージ12個+ « blog.udzura.jp

    Time to Read 3分 近いうちに環境をお引越しする必要が出てきたので、自分向けにまとめ。 Ubuntu だと割と色々最初から入ってるし、こんなもんかなあ……。 git パッケージ詳細ページ 大変有名な分散型バー [...]

    yuiseki
    yuiseki 2012/02/04
  • 退職のご挨拶 « blog.udzura.jp

    このたび、株式会社富士山マガジンサービス(fujisan.co.jp)を退社いたしますのでご報告します。2月3日(日)が最終出社となります。 Fujisan.co.jp では、大変に貴重な経験をたくさん積むことができ、1年と11ヶ月の短さとは思えないぐらい成長ができたと思います。特にエンジニアの皆様においては、ぼくは割とめちゃくちゃな人間だったと思うのですが、見捨てることなく多くのことを教えていただきました。感謝してもし切れません。 多くの方に迷惑を掛けたように思いますし、「良い“ものづくり”」のサイクルを思ったとおりに実現できなかった面があったと思っています。が、ひとえに自分の未熟さに依るもので、今後の課題としたいと思っています。 もう少しだけ違ったことをしたいと思い、より冷たい海に出ていこうと思います。 で、来週からさっそく新しい環境に入ります。そちらについても追ってご報告いたします

    yuiseki
    yuiseki 2012/02/04
  • Classic Sinatra で、インラインテンプレートを別のファイルにまとめる « blog.udzura.jp

    ご存知のとおり、 Classic シナトラ~ はルーティングを定義したファイルの __END__ の後ろにテンプレートを書いていくことができる 。クイックハック感があるが便利。 だが、 Classic Sinatra のアプリケーションが若干大きくなってくると、ルーティング自体+ __END__ の後ろ、ということでファイルが肥大したりすると思う。かといって、意外と view フォルダを掘るのって億劫だったりする。 実は、「enable :inline_templates」を宣言したファイルにテンプレートを書いておけば、読みこんでくれるので、以下のようにファイルを分けられる。 app.rb: require 'sinatra' require 'haml' require './templates' get '/' do haml :index end get '/foo' do haml

    yuiseki
    yuiseki 2012/01/18
  • kaminari gem を Padrino で使うには « blog.udzura.jp

    明けましておめでとうございます。ブログもぼちぼち通常営業です。 先日ぼくのSinatra系対応パッチがマ~ジされました、次世代ページネーションエンジン kaminari ですが、昨年末にそのパッチを含む 0.13.0 がリリースされています。 早速使ってみたいところですが、時期的に、ちょうど Rails 3.2RC やら Rack 1.4 やらが出ていて、設定にややコツが要るのでそこだけメモしておきます。Padrino の例ですが、 Sinatra でも適宜読み替えてください。 プロジェクト作成

    yuiseki
    yuiseki 2012/01/06
  • Ruby Advent Calendar 2011 / 2日目 – almost-sinatra.rb の深淵を覗く « blog.udzura.jp

    初めましての方は初めまして。近藤うちお(@udzura)です。 Sinatra ベースのフレームワークである Padrino framework の日語サイトを管理したりしています。 Ruby Advent Calendar jp: 2011 2日目である今日は、 Sinatra 主要コミッタである rkh が、わずか 8 行で実装した Sinatra クローン、「almost-sinatra.rb」を読み解いたりして、2日目にして一気に読者を置いてけぼりにしたいと思います(1日目はこちら – “Coffeescripting with Ruby”)。 RedBull(できれば複数)の用意を推奨します…… まずは、全コードを下にコピーして置いておきます。先日、 このパッチ が accept されたので、それが適用された最新バージョンです。 %w.rack tilt backports

  • Rack Middleware たちがどのように呼ばれるかを見てみよう(e.g. Sinatra) « blog.udzura.jp

    Sinatra::Base.middleware そもそも、 Sinatra::Base を継承したクラスには、クラスメソッドとして Sinatra::Base.middleware が用意されており、明示的に Sinatra::Base.use で利用を宣言したミドルウェアはそこから一覧を取得できる。 + (Object) middleware ところが、 Sinatra アプリケーションが実際に Rack でホストされ、アクセスされる際には、 use で宣言していないミドルウェアもたくさん呼ばれるわけで。その全貌が知りたい場合。むろん、 Rails、Ramaze、Camping といった Rack に対応したフレームワークならば同じような方法で「中を覗く」ことが可能なはず。 set_trace_func を使ってみる Kernel#set_trace_func は profile.rb

  • Sinatra 再入門 – 後日談と言うか « blog.udzura.jp

    先日公開された るびまの Sinatra/Padrino/Rack の記事 ですが、ぼくの想像以上の反響と好意的な評価をいただいているようで、大変うれしく思います。 “Rails Hub情報局” にも取り上げていただきました。 Railsはフルコース、Sinatraはお皿、Padrinoはビュッフェ 西村さんの素晴らしい洞察力で、 Sinatra、Padrino、Rackについての考察もされた必読の記事なんですが、一点だけ引っかかったところが、 Padrinoはビュッフェ という点で、「アレ?」 となりました。 自分自身でも Sinatra と言う皿の上に、ロガー、キャッシュ、ヘルパー、認証と言った料理をたくさん盛り付けていく という表現をしていたんですが、ちょっと、自分でどういうつもりで使ったのかな~とあらためて考えこんでしまいました。 #このあたりの違和感を twitter で整理して

    yuiseki
    yuiseki 2011/12/01
  • Webistrano はもっと評価されてもいいと思うので、紹介します « blog.udzura.jp

    業務でも便利に使わせていただいております、 Webistrano 、言ってみれば capistrano の web UI なんですけれど、大変有用なので、ちょこっと紹介します。 What’s good Webistrano は、リモートサーバーへのデプロイを大変簡単にしてくれる capistrano と言うコマンドラインツールを、ウェブアプリケーションでラップしたものです。 やれることは素の capistrano と同じなんですが、ブラウザベースアプリケーションになることで以下のようなメリットが生まれます。 ブラウザベースなので、 CUI に抵抗がある人でも簡単にデプロイできる (CUIをいつまで経っても覚えてくれない人っていますよね~…) テスト、ステージング、番、などで別々の設定を保存できる (Highline などを使ってインタラクティブに尋ねる必要なし) プロジェクトをまたい

    yuiseki
    yuiseki 2011/11/11
  • SinatraとCoffeeScriptでわかる、Sprocketsの使い方 « blog.udzura.jp

    アセットパイプラインなどで使えるとして話題の Sprockets gem 、自分向けまとめ。確認しないで書いているところもあります。 アセットパイプラインを支える技術 – sprockets Sprockets: Rack-based asset packaging Web assets 、具体的には主に CSSJavaScript の圧縮/依存性の解決/各種ソースからの変換をサポートするための Rubygem 。 asset とは資産、財産の意。 執筆時点現在のバージョンは 2.0.3 。なお、 rack-sprockets gem は、 sprockets( 具体的には、 require 'sprockets' map '/assets' do environment = Sprockets::Environment.new environment.append_path 'ap

    yuiseki
    yuiseki 2011/10/26
  • スタート Padrino を終えて « blog.udzura.jp

    で初めてかもしれない Padrino framework に関する MEETUP 、「スタートPadrino」が開催されました。その場で、 Padrino framework の日エバンジェリスト(自称)っぽくお話をさせていただきました。お誘いいただいた @repeatedly さんにあらためて感謝。 言いたいことを全部詰め込んだこともあり、だいぶ長いですが、雰囲気は分かっていただけるかな~と。 今後も地道に Padrino を楽しくする活動をしていきます! あと、ハッカソンとかしたいです。 Sinatrasta という言葉は流行らない気もしますがしつこく主張していこうと思います。 個人的には懇親会と称して、久しぶりにロンア~ルに入れたのも良かったです。 栄児 家庭料理 郷店 板橋店にまた汁なし坦々麺べにいこうかな~……。

  • New Relic を Sinatra (というか Rack アプリケーション一般)で使う « blog.udzura.jp

    はい。 計測用の Rack Middleware を自作 Rack 向けミドルウェアと言うかたちで切り離されているわけではないようなので、以下の手順で。 NewRelic::Agent::Instrumentation::Rack の説明のとおりに、メトリックだけをするミドルウェアを作成。 lib/app_metric.rb: require 'new_relic/agent/instrumentation/rack' class AppMetric # アプリケーションをスルーするミドルウェアを実装: def initialize(app) @app = app end def call(env) @app.call(env) end # call を定義した後で include すること: include NewRelic::Agent::Instrumentation::Rack e

  • Sinatra 1.3.0 & Padrino 0.10.3 がリリースされました。ざっくり紹介(2)。 « blog.udzura.jp

    前回までのあらすじ Sinatra と Padrino の最新バージョンがリリースされたよ。 Sinatra 1.3.0 は昨日紹介したよ(Sinatra 1.3.0 & Padrino 0.10.3 がリリースされました。ざっくり紹介(1))。今日はパドリーノです。 そのまえに、 Padrino ってなんだよという方へ Padrino framework は、コアに Sinatra を据え、さらに便利になるようにいろいろな機能を拡張したライブラリ一式です。むかし sinatra_more というものがあったんですが、その開発メンバーも含め新チームでゴリゴリと開発している模様です。 このフレームワークの狙いは、 Sinatra のエッセンスに合わせつつ、どんどん複雑さを増すばかりのアプリケーション開発に必要となるような機能、たとえば、フォーム、メール配信、国際化、ヘルパー、キャッシュなど…

    yuiseki
    yuiseki 2011/10/05
  • Sinatra 1.3.0 & Padrino 0.10.3 がリリースされました。ざっくり紹介(1)。 « blog.udzura.jp

    スィナトゥラとパデュリ~ノの最新バージョンがめでたく リリースされました。 1.3.0 は大変難産だったようなので、おめでとうございます。 ブログ、CHANGELOG等を見て、まずはざっくり Sinatra 1.3.0 を紹介させていただきます。で、こっそりとリリースされ続けてきた Padrino 0.10.0~0.10.3 での主な変更点は明日紹介させていただきます……。 ということで。 stream API の追加 一番の目玉はこれです。きっと。 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 要するに、「レスポンスボディをちょっとずつ返す」ことが出来るようになりました、た

    yuiseki
    yuiseki 2011/10/05
  • 『ふつうのLinuxプログラミング』を読んだ。 « blog.udzura.jp

    「いまさら C 言語っすかwww」という風潮もあるが、普通に勉強になった。 僕にしては珍しく2週間程度で読み終わった。これはひとえに、 自分の興味関心が強い分野であった のレベルが自分にとってちょうど良かった(今回の場合は、C言語はポインタが分かり、Linuxを一通り使えるが、ポインタのポインタや関数ポインタ、システムコールの種類などは十分精通していないというレベルにぴったりだった)。 文体というか語り口が、自分にとってすんなりくる感じだった(著者の青木さんはRuby Hacking Guideなどの著者で、文章に馴染みがあった。) 特に、ファイルシステム/ストリーム/プロセス という切り口で解説してくれて、最後にちゃんと動くアプリケーションをアレしてくれていたのは大変しっくりきて良かった。

    yuiseki
    yuiseki 2011/10/03
  • Ubuntu ではじめる「7つの言語 7つの世界」 « blog.udzura.jp

    最近、微妙に身内な感じで、プログラマ風の人たちで集まり『7つの言語 7つの世界』の読書会などをやっている。 で、僕はとりあえず一通り読み終わって、今後は読書会の場などで手を動かしながら、サンプルコードを写経などしながら、課題を解いていったりする段階だと思ったので、先日 Ubuntu Natty マシンを用意してセットアップを行った。その際の作業メモ。某勉強会界隈はどうせみんな Mac でしかも Book Air なので、 Lion / homebrew 版の手順書を誰か作っていただけると幸甚です。 処理系を入れる Io 以外は一気に入れることができる。 apt 最高!!!!

    yuiseki
    yuiseki 2011/09/17