= Rabbit on Sinatra : subtitle プレゼン用PDF作成ツールrab2pdf : author 横山昌史 : institution Rabbitショッカー : content-source 勉強会@Sinatra札幌 : date 2013/11/24 : allotted-time 20m : theme nyankosakana = 自己紹介 * ソフトウェア開発者 * Webアプリの主戦場はSinatra * Rabbitショッカー * 札幌でRabbitを使っている * Rabbitコミッター * 札幌でRabbitにコミットしている = 宣伝 == プロパティ :as_large_as_possible true = 札幌市中央区Ruby会議01 2014年2月8日(土) # image # src = http://myokoym.net/public/chuork01-ss.png # relative_height = 100 # reflect_ratio = 0.1 == プロパティ :enable-title-on-image true = 話すこと * Rabbitを * Sinatraで動かした話 = 話すこと * ((*Rabbitを*)) * Sinatraで動かした話 = Powered by # image # src = https://raw.github.com/rabbit-shocker/rabbit/master/sample/lavie.png # relative_height = 100 == プロパティ :enable-title-on-image false = Rabbitとは # blockquote Rubyで書かれた((*プログラマー向け*))のプレゼンテーションツール = Rabbitの特徴 * 文章はテキストで記述 * RD、Wiki、Markdownなど * 装飾(テーマ)はRubyで記述 * RubyGemsで簡単に追加 * バージョン管理しやすい = (('del:昨日'))((*機能*))(('sub:が'))(('tag:italic:豊富')) # RT caption = キーバインドの一部 一覧, 情報, メニュー i(小文字), I(大文字), 右クリック (('note:http://rabbit-shocker.org/ja/sample/rd/rabbit.html')) = インストールも簡単 gem install rabbit = だけど、インストールする\n前に試してみたいとか == プロパティ :as_large_as_possible false = 借りたPCで、そもそも\nRubyが入ってないとか、\nそんなとき == プロパティ :as_large_as_possible false = 話すこと * Rabbitを * ((*Sinatraで動かした話*)) = Rabbit + Sinatra = rab2pdf # image # src = http://myokoym.net/public/rab2pdf-ss.png # relative_height = 100 # reflect_ratio = 0.1 == プロパティ :enable-title-on-image true = rab2pdfとは * Webアプリケーション * RabbitのPDF生成機能を活用 * テキストからプレゼン用PDFを作成 = サーバーの仕事 * Rabbitはインストール済み * リクエストはSinatraで処理 * SinatraからRabbitを実行 * PDFを生成 = 余談 RabbitはGUIアプリケーションですが、 GUI環境がなくても動くように工夫されています。 なので、Webアプリケーションのバックグラウンド としても使うことができます。 = 本題 # image # src = http://d3j5vwomefv46c.cloudfront.net/photos/large/757398619.jpg # relative_height = 100 # reflect_ratio = 0.1 == プロパティ :enable-title-on-image true = 作り方 (1) テキストを書く (2) rab2pdfに送信 (3) PDFをダウンロード = 1. テキストを書く * 現在はRD形式のみ対応 * RabbitはWikiやMarkdownに対応 * rab2pdfでも対応したい = 2. rab2pdfに送信 * 普通のフォーム * 普通のテキストエリア * 普通の送信ボタン = 3. PDFをダウンロード * ダウンロードリンクが表示される * PDFはしばらくサーバーに残る = 隠し機能 : Gitリポジトリ指定機能 ローカルテーマや画像に対応 http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo = デモ (('tag:center')) (('note:http://myokoym.net/rab2pdf/')) = 使えるテーマ * Rabbit組み込みのテーマ * RubyGems.orgに\n公開されているテーマ = ソースコード * オープンソース(GPLv2+) * GitHubで公開 * (('note:https://github.com/myokoym/rab2pdf')) = トップページ # coderay ruby get "/" do @params ||= {} @params[:source] = slide_source haml :index end = slide_source # coderay ruby = TITLE : author Your Name : date #{Time.now.strftime("%Y/%m/%d")} = FIRST SLIDE * ITEM 1 * ITEM 2 = フォーム(Haml) # coderay ruby %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"} = PDF生成 # coderay ruby post "/convert" do @download_url = convert(params[:source], params[:filename]) @params = params haml :index end = Rabbit.run # coderay ruby 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 = Thank you rab2pdfはあくまで入門用&緊急用のツールなので、 機能が少ないです。可能ならRabbitをインストール して使うことをおすすめします。 :-) (('note:http://rabbit-shocker.org/'))