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: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: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:rabbit-shocker.org/’))