$30 off During Our Annual Pro Sale. View Details »

Rabbit on Sinatra

Rabbit on Sinatra

Rabbit( http://rabbit-shocker.org/ )をSinatraで動かした話。勉強会@Sinatra札幌( http://sinatra-sapporo.doorkeeper.jp/events/6626 )の発表資料です。

Masafumi Yokoyama

November 24, 2013
Tweet

More Decks by Masafumi Yokoyama

Other Decks in Programming

Transcript

  1. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Rabbit on Sinatra
    プレゼン用PDF作成ツールrab2pdf
    横山昌史
    Rabbitショッカー
    勉強会@Sinatra札幌
    2013/11/24

    View Slide

  2. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    自己紹介
    ソフトウェア開発者
    Webアプリの主戦場はSinatra
    Rabbitショッカー
    札幌でRabbitを使っている
    Rabbitコミッター
    札幌でRabbitにコミットしている

    View Slide

  3. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    宣伝

    View Slide

  4. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    札幌市中央区Ruby会議01
    2014年2月8日(土)
    札幌市中央区Ruby会議01
    2014年2月8日(土)

    View Slide

  5. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    話すこと
    Rabbitを
    Sinatraで動かした話

    View Slide

  6. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    話すこと
    Rabbitを
    Sinatraで動かした話

    View Slide

  7. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Powered by

    View Slide

  8. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Rabbitとは
    Rubyで書かれたプログラマー
    向けのプレゼンテーションツール

    View Slide

  9. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Rabbitの特徴
    文章はテキストで記述
    RD、Wiki、Markdownなど
    装飾(テーマ)はRubyで記述
    RubyGemsで簡単に追加
    バージョン管理しやすい

    View Slide

  10. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    昨日機能

    豊富
    キーバインドの一部
    一覧 情報 メニュー
    i(小文字) I(大文字) 右クリック
    http://rabbit-shocker.org/ja/sample/rd/rabbit.html

    View Slide

  11. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    インストールも簡単
    gem install rabbit

    View Slide

  12. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    だけど、インストールする
    前に試してみたいとか

    View Slide

  13. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    借りたPCで、そもそも
    Rubyが入ってないとか、
    そんなとき

    View Slide

  14. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    話すこと
    Rabbitを
    Sinatraで動かした話

    View Slide

  15. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Rabbit + Sinatra = rab2pdf
    Rabbit + Sinatra = rab2pdf

    View Slide

  16. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    rab2pdfとは
    Webアプリケーション
    RabbitのPDF生成機能を活用
    テキストからプレゼン用PDFを作成

    View Slide

  17. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    サーバーの仕事
    Rabbitはインストール済み
    リクエストはSinatraで処理
    SinatraからRabbitを実行
    PDFを生成

    View Slide

  18. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    余談
    RabbitはGUIアプリケーションです
    が、GUI環境がなくても動くように工
    夫されています。
    なので、Webアプリケーションのバッ
    クグラウンドとしても使うことができ
    ます。

    View Slide

  19. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    本題
    本題

    View Slide

  20. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    作り方
    テキストを書く
    1.
    rab2pdfに送信
    2.
    PDFをダウンロード
    3.

    View Slide

  21. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    1. テキストを書く
    現在はRD形式のみ対応
    RabbitはWikiやMarkdownに対応
    rab2pdfでも対応したい

    View Slide

  22. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    2. rab2pdfに送信
    普通のフォーム
    普通のテキストエリア
    普通の送信ボタン

    View Slide

  23. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    3. PDFをダウンロード
    ダウンロードリンクが表示される
    PDFはしばらくサーバーに残る

    View Slide

  24. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    隠し機能
    Gitリポジトリ指定機能
    ローカルテーマや画像に対応
    http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo

    View Slide

  25. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    デモ
    http://myokoym.net/rab2pdf/

    View Slide

  26. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    使えるテーマ
    Rabbit組み込みのテーマ
    RubyGems.orgに
    公開されているテーマ

    View Slide

  27. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    ソースコード
    オープンソース(GPLv2+)
    GitHubで公開
    https://github.com/myokoym/rab2pdf

    View Slide

  28. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    トップページ
    get "/" do
    @params ||= {}
    @params[:source] = slide_source
    haml :index
    end

    View Slide

  29. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    slide_source
    = TITLE
    : author
    Your Name
    : date
    #{Time.now.strftime("%Y/%m/%d")}
    = FIRST SLIDE
    * ITEM 1
    * ITEM 2

    View Slide

  30. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    フォーム(Haml)
    %form{:action => url("/convert", false, true),
    :method => "post"}
    %p
    %textarea{:name => "source",
    :cols => 50,
    :rows => 10}= @params[:source]
    %p
    %input{:type => "text",
    :name => "filename",
    :size => 30,
    :value => @params[:filename]}
    %p
    %input{:type => "submit"}

    View Slide

  31. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    PDF生成
    post "/convert" do
    @download_url = convert(params[:source],
    params[:filename])
    @params = params
    haml :index
    end

    View Slide

  32. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Rabbit.run
    def convert(source, filename)
    ...
    Tempfile.open(["rab2pdf", ".rab"]) do |tempfile|
    tempfile.puts(source)
    tempfile.flush
    Rabbit::Command::Rabbit.run("--print",
    "--output-filename",
    pdf_path,
    tempfile.path)
    end
    ...
    end

    View Slide

  33. Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
    Thank you
    rab2pdfはあくまで入門用&緊急用
    のツールなので、機能が少ないで
    す。可能ならRabbitをインストールし
    て使うことをおすすめします。 :-)
    http://rabbit-shocker.org/

    View Slide